2

配列があります

var words =new Array(
            'apple',
            'apa',
            'found',
            'stackoverflow',
            'will'
   );

と変数

var search = 'papa.com';

今、私はこのような式を設定したい

var Flag=false;
var regexp;
for(var i in words) 
{
    regexp = new RegExp('(^(.*\.))?' + words[i] + '\.([a-z]{2,3})(\.(\w+))?','i');
    if (regexp.test(search)) {Flag=true;}
}
alert (Flag);

ループは、words配列キーを 1 つずつ取得し、正規表現を設定してsearch、構築された式に対して変数をテストすることになっています。1 つ以上の一致がFlagtrue になる場合。

しかし、idは機能しません。

4

1 に答える 1

0

文字列から正規表現を作成するときは、エスケープシーケンスをエスケープする必要があります。これは\、文字列内のリテラル表記もエスケープシーケンスを開始するため、\が削除されるためです。

リテラル構文から構築された文字列にリテラル文字を含めるには\、が必要\\です。

regexp = new RegExp('(^(.*\\.))?' + words[i] + '\\.([a-z]{2,3})(\\.(\\w+))?','i');

あなたの正規表現は、もちろん、非常に異なる意味を持つ.代わりに、で終わっていました。\.

于 2012-12-06T02:40:02.137 に答える