我正在学习javascript,并分析现有代码。在我的JS参考书中,它说在单个空格上搜索使用“\s”?但我发现了密码
\s
obj.match(/Kobe Bryant/);
而不是使用\s,它使用实际的空间?为什么这不会产生错误?
s2j5cfk01#
字符类\s不仅包含空格字符,还包含其他Unicode白色字符。\s等效于以下字符类:
[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
dxxyhpgq2#
不。在正则表达式中包含文字空格是完全法律的的。然而,它并不等价-\s将包含任何空格字符,包括制表符,非中断空格,半角空格和其他字符,而文字空格将只匹配常规空格字符。
lfapxunr3#
\s匹配任何空白字符,包括制表符等。当然,您可以使用文字空间也没有问题。就像您可以使用[0-9]而不是\d来表示任何数字。但是,请记住,[0-9]等效于\d,而文字空间是\s的子集。
[0-9]
\d
kwvwclae4#
除了普通空格,\s还匹配不同类型白色字符,包括制表符(根据配置,可能还包括换行符)。也就是说,匹配普通空格当然是有效的,特别是在您想要匹配通常由普通空格分隔的名称的情况下。
cnjp1d6j5#
\xA0也是一个白色,尤其是一个非中断空格。当我们从notepad++粘贴一个带有空格的纯文本时,我们确实遇到了Quill Editor的问题。JS \xA0中的空格是一个空格,但与普通空格\u0020(' ')不匹配。
5条答案
按热度按时间s2j5cfk01#
字符类
\s
不仅包含空格字符,还包含其他Unicode白色字符。\s
等效于以下字符类:dxxyhpgq2#
不。在正则表达式中包含文字空格是完全法律的的。
然而,它并不等价-
\s
将包含任何空格字符,包括制表符,非中断空格,半角空格和其他字符,而文字空格将只匹配常规空格字符。lfapxunr3#
\s
匹配任何空白字符,包括制表符等。当然,您可以使用文字空间也没有问题。就像您可以使用[0-9]
而不是\d
来表示任何数字。但是,请记住,[0-9]
等效于\d
,而文字空间是\s
的子集。kwvwclae4#
除了普通空格,
\s
还匹配不同类型白色字符,包括制表符(根据配置,可能还包括换行符)。也就是说,匹配普通空格当然是有效的,特别是在您想要匹配通常由普通空格分隔的名称的情况下。cnjp1d6j5#
\xA0也是一个白色,尤其是一个非中断空格。当我们从notepad++粘贴一个带有空格的纯文本时,我们确实遇到了Quill Editor的问题。JS \xA0中的空格是一个空格,但与普通空格\u0020(' ')不匹配。