代码之家  ›  专栏  ›  技术社区  ›  jpsimons

Javascript正则表达式引擎:对于非单词字符,字符串开头的单词边界不匹配

  •  3
  • jpsimons  · 技术社区  · 6 年前

    我想 \b

    '#abc'.match(/\b#/)
    

    但至少在Firefox和Chrome中是空的。知道为什么吗?

    2 回复  |  直到 6 年前
        1
  •  4
  •   NicolasB    6 年前

    \b 相当于 (^\w|\w$|\W\w|\w\W) . 你可能读过 the mozilla documentation

    单词边界匹配单词字符后跟非单词字符之间的位置,或非单词字符后跟单词字符之间的位置,或字符串的开头或结尾。

    . 这就是在试图解释一些非常算法化的东西时,写长句而不是使用要点的问题:很难阅读,因此很难校对。


    a source other than mozilla :

    有三种不同的位置可以作为单词边界:

    • 如果第一个字符是单词字符,则在字符串的第一个字符之前。
    • 在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
        2
  •  0
  •   Poul Bak    6 年前

    ' # “不是一个 文字 性格,所以没有 Word 要在字符串开头匹配的边界。就这么简单。

    如果删除' ,所以 'abc' ,然后' \b '将正确匹配 Word boundary .