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 に答える