使用JavaScript Regexp匹配数组与数组

时间:2012-07-06 09:19:48

标签: javascript regex

nameArray = new Array("Bob", "Ben", "Don");
for (i = 0; i < nameArray.length; i++) {
re = new RegExp("\b(" + nameArray[i] + ")\b");
checkWord = re.test("Bob");
if (checkWord) {
    alert("true");
} else {
    alert("false");
}
}​

它返回错误3次。它应该在循环第一次运行时返回true。 我不知道我的错误是什么。有人可以帮忙吗?感谢。

3 个答案:

答案 0 :(得分:3)

您必须使用双重转义,因为您正在编写一个字符串:

new RegExp("\\b(" + nameArray[i] + ")\\b");

答案 1 :(得分:1)

您可能想要查看管道(|)在正则表达式中的含义。无需循环:

var nameArray = new Array("Bob", "Ben", "Don");
var nameExpression = nameArray.join('|');
var re = new RegExp('\\b(' + nameExpression + ')\\b');
var checkWord = re.test('A string containing the word Bob in it.');
if (checkWord)
  console.log('+');
else 
  console.log('-');

此外,您没有声明您的变量。你应该使用var声明变量,否则你将生成危险的全局变量并被认为是错误的样式。

答案 2 :(得分:0)

我认为像这样的正则表达式会起作用

re = new RegExp("^" + nameArray[i] + "$");