我正在学习 JavaScript 并分析现有代码。
在我的 JS 参考书中,它说要搜索单个空格使用 "\s
"?
但是我遇到了这段代码:
obj.match(/Kobe Bryant/);
它使用实际的空格而非\s
,为什么这不会产生错误?
我正在学习 JavaScript 并分析现有代码。
在我的 JS 参考书中,它说要搜索单个空格使用 "\s
"?
但是我遇到了这段代码:
obj.match(/Kobe Bryant/);
它使用实际的空格而非\s
,为什么这不会产生错误?
\s
不仅包含空格字符,还包括其他Unicode 空白字符。 \s
相当于这个字符类:[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
\s
几乎总是您想要的,但要小心......如果您正在编码二进制数据,请确保仅匹配“空格键” \u0020
。 - Ajax不是的。在正则表达式中包含一个字面上的空格是完全合法的。
然而,它并不等同于\s
。 \s
将包括任何空白字符,包括制表符、不间断空格、半角空格和其他字符,而一个字面上的空格只能匹配普通空格字符。
\s
匹配任何空白字符,包括制表符等。当然,您也可以使用文字空格而不会出现问题。就像您可以使用[0-9]
代替\d
表示任何数字一样。但是,请记住,[0-9]
等同于\d
,而文字空格是\s
的子集。
除了普通空格外,\s
还匹配不同类型的空白字符,包括制表符(根据配置可能还包括换行符)。尽管如此,在您想要匹配通常由普通空格分隔的名称的情况下,使用普通空格进行匹配肯定是有效的。
\xA0 也是一个空格,尤其是一个不换行的空格。 我们在使用记事本++复制粘贴带有空格的纯文本时遇到了Quill Editor的问题。 JS中的空格 \xA0 是一个空格,但与常规空格 \u0020 (' ') 不匹配。
RegExp
对象的好资源:https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp - user23987