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数组键,然后设置正则表达式并search根据构建的表达式测试变量,如果有一个或多个匹配,Flag则结果为真。

但是,id 不起作用。

4

1 回答 1

0

从字符串构建正则表达式时,您需要转义转义序列。这是因为\字符串中的文字符号也开始了一个转义序列,因此\被删除了。

\要在由文字语法构建的字符串中包含文字字符,您需要\\.

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

.您的正则表达式以而不是结束\.,这当然具有非常不同的含义。

于 2012-12-06T02:40:02.137 回答