将单词与具有JavaScript Regexp的数组进行匹配

Matching a word against an array with JavaScript Regexp

本文关键字:数组 Regexp 单词 JavaScript      更新时间:2023-09-26
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。我不知道我的错误是什么。谁能帮忙?谢谢。

您必须使用双重转义,因为您要编写字符串:

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

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

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声明变量,否则你会生成全局变量,这是危险的,被认为是糟糕的风格。

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

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