4

私は次の正規表現を持っています-

bannerHtml.match(/href\s*=\s*[\"']{clickurl}(.*)[\"']/);

これは次のように一致します-
href = "{clickurl}

ここで、文字列全体ではhref なく、大文字と小文字を区別しないようにする必要があります。パターン修飾子の追加を確認しiましたが、常に文字列全体に使用されているようです-

bannerHtml.match(/href\s*=\s*[\"']{clickurl}(.*)[\"']/i); 

詳細 次のすべてを一致させたい-
hREF = "{clickurl}
href = "{clickurl}
HREF = "{clickurl}

ただし、大文字clickurlの部分は一致しないはずです-
href = "{CLICKURL}

4

3 に答える 3

6

次を使用できます。

/[hH][rR][eE][fF]\s*=\s*[\"']{clickurl}(.*)[\"']/

変更された部分は次のとおりです[hH][rR][eE][fF]。つまり、次のことを意味します。

一致するhまたはH、その後にrまたはR、に続いてeまたはE、および後に続くfまたはF


汎用にしたい場合は、のようなテキスト文字列を受け取り、abcを返すヘルパー関数を作成できます[aA][bB][cC]。それはかなり簡単なはずです。

于 2013-02-20T06:43:36.580 に答える
2

部分的に大文字と小文字を区別することはできませんが、常に具体的にすることができます。

bannerHtml.match(/[hH][rR][eE][fF]\s*=\s*["']{clickurl}(.*)["']/);

これに代わる方法は、2次正規表現を使用して誤った一致を破棄することです。

"注意として、スラッシュのみ/が区切り文字であるため、引用符をエスケープする必要はありません。

于 2013-02-20T06:44:28.070 に答える
0

まず第一に、それは非常に良い質問だと言わなければなりません。私はあなたの問題に対する2つの解決策を考えました:

  1. すべてのhref文字列を小文字にします。

    bannerHtml.replace(/href/ig,"href")

  2. まず、後で使用するために{clickurl}を括弧で囲みまし({clickurl})た。次に、大文字と小文字を区別しない文字列全体を照合して、パターンと一致するかどうかを確認しました。最後に、に{clickurl}格納されている文字列の一致をチェックresult[1]し、正確なケースであるかどうかを確認しました。

    var re=/href\s*=\s*[\"']({clickurl})(.*)[\"']/i;
    
    var result = re.exec(bannerHtml);
    
    if(result && result[1]=="{clickurl}"){
        //Match!
    }
    

私はそれがあまり正規表現の解決策ではないことを知っていますが、それは私が考えることができる最高のものです。幸運を。

于 2013-02-20T07:38:00.230 に答える