18

非常に単純に思えますが、true を期待しているときに、この JavaScript コードが false を返す理由を理解できません) - エスケープ文字で何かをしなければならないと思いますか? 空白が存在する場合に true を返す JS ブロックを書くのを手伝ってくれませんか?

var inValid = new RegExp("[\s]");
var value = "test space";
var k = inValid.test(value);
alert(k);
4

5 に答える 5

35

ブラケットは必要ありません。バックスラッシュをエスケープする必要があります (文字列形式を使用している場合)。組み込みの正規表現構文を使用する場合はバックスラッシュをエスケープする必要がないため、組み込みの正規表現構文の方が簡単です。

var inValid = /\s/;
var value = "test space";
var k = inValid.test(value);
alert(k);

于 2013-04-16T22:21:36.220 に答える
5

文字列リテラルから RegExp オブジェクトを作成する場合は、バックスラッシュをエスケープする必要があります。

var inValid = new RegExp("[\\s]");

または、次を使用することもできます。

var inValid = /\s/;

これは正規表現リテラルを使用するため、バックスラッシュのエスケープは必要ありません。ここでは文字クラスも必要ないため、角かっこも削除しました。

于 2013-04-16T22:20:11.067 に答える
5

そこに何かを一致させたいが、空白がない場合:

alert(/^\S+$/.test(value));
于 2013-04-16T22:37:20.567 に答える
3

ダブルエスケープ文字が必要です:

1 つは "s" 用で、もう 1 つは "\" 自体用です。

var inValid = new RegExp("[\\s]");
于 2013-04-16T22:20:20.573 に答える