18

看起来很简单,但无法弄清楚为什么这个 javascript 代码在期望 true 时无法返回 false) - 我猜它必须对转义字符做些什么?有人可以帮我写一个 JS 块,如果存在空格,它将返回 true 吗?

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

你需要一个双转义字符:

一个用于“s”,一个用于“\”本身:

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

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

于 2020-09-02T14:38:26.917 回答