【问题标题】:Javascript Regular Expression "Single Space Character"Javascript 正则表达式“单个空格字符”
【发布时间】:2010-03-11 22:20:58
【问题描述】:

我正在学习 javascript,我正在分析现有代码。

在我的 JS 参考书中,它说搜索单个空格使用“\s”?

但我遇到了代码

obj.match(/Kobe Bryant/);

不使用\s,而是使用实际空间?

为什么这不会产生错误?

【问题讨论】:

标签: javascript regex


【解决方案1】:

字符类\s 不仅包含空格字符,还包含其他Unicode white space characters\s 相当于这个字符类:

[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]

【讨论】:

  • +1,获取链接的时间可能比其他人长 :-)
  • 对于任何编码数据的人来说,考虑“一个真正的空格字符”和“任何空白用户可能发送给我”之间的区别是非常重要的。\s 几乎总是你的想要,但要小心...如果您正在编码二进制数据,请确保仅匹配“空格键”\u0020
  • 链接不再有效。你能更新一下吗?我真的很感兴趣。谢谢。
【解决方案2】:

没有。在正则表达式中包含文字空格是完全合法的。

但是,它不等效 - \s 将包含任何空白字符,包括制表符、不间断空格、半角空格和其他字符,而文字空格将仅匹配常规空格字符。

【讨论】:

    【解决方案3】:

    \s 匹配任何空白字符,包括制表符等。当然,您也可以毫无问题地使用文字空间。就像您可以使用 [0-9] 而不是 \d 来表示任何数字一样。但是请记住,[0-9] 等价于 \d,而文字空间是 \s 的子集。

    【讨论】:

      【解决方案4】:

      除了普通空格,\s 还匹配不同类型的空白字符,包括制表符(根据配置,可能还有换行符)。也就是说,与普通空格匹配当然是有效的,尤其是在您似乎想要匹配名称的情况下,该名称通常由普通空格分隔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多