2
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");
}
}​

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

4

3 回答 3

3

由于您正在编写字符串,因此必须使用双重转义:

new RegExp("\\b(" + nameArray[i] + ")\\b");
于 2012-07-06T09:28:54.043 回答
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否则您将生成危险且被认为是不良风格的全局变量。

于 2012-07-06T09:28:10.427 回答
0

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

re = new RegExp("^" + nameArray[i] + "$");
于 2012-07-06T09:27:28.077 回答