0
var name ='John Rock';
alert((/^John|Steve$/i).test(name));

http://jsfiddle.net/czBhb/

このコードはtrue、正確なマッシングを使用していないため、警告しますが、使用する必要があります。

およびに戻る必要trueJohnありjoHnます(大文字と小文字の一致はオフです)。しかし、John 12またはのためではありませんmahjohng

|コードにあります、私たちはそれを保持する必要があります。

この正規表現を修正するにはどうすればよいですか?

4

4 に答える 4

3

あなたの目標が正確に Johnまたはに一致することである場合Steve、あなたはそこにグループを入れたいと思います:

alert(/^(?:John|Steve)$/i.text(name));

i大文字と小文字を区別しない場合にも注意してください。(Beat Richartzが問題を指摘するとすぐに、30分以上前にあなたの他の質問に対する私の回答でこれを指摘しました。)

于 2013-02-25T13:37:17.060 に答える
2

どうですか

var name ='John Rock';
alert((/^(John|Steve)$/i).test(name));
于 2013-02-25T13:37:03.590 に答える
2

これを試して:

alert(/^(?:John|Steve)$/i).test(name))

(?:実際にグループを作成する場合と作成しない場合の^グループ$

/i大文字と小文字を区別しない場合

于 2013-02-25T13:37:17.057 に答える
1

ポイントは区切り記号^$区切り記号にあります。コメントで既に指摘したように、それらは OR よりも優先されるように見えるため、正規表現は で始まるJohn、または で終わるものと一致しSteveます。

区切り文字を OR の外に置きます。

var name ='John Rock';
alert((/^(John|Steve)$/).test(name));
于 2013-02-25T13:40:46.820 に答える