有一个数组
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
变量,如果有一个或多个匹配{{1将会出现真实的。
但是,id不起作用。
答案 0 :(得分:0)
从字符串构建正则表达式时,需要转义转义序列。这是因为字符串文字表示法中的\
也会开始转义序列,因此会移除\
。
要在根据文字语法构建的字符串中包含文字\
字符,您需要\\
。
regexp = new RegExp('(^(.*\\.))?' + words[i] + '\\.([a-z]{2,3})(\\.(\\w+))?','i');
你的正则表达式以.
而不是\.
结束,这当然具有非常不同的含义。