jps*_*ons 4 javascript regex word-boundary
我认为\b匹配在单词和非单词字符之间的过渡处,或者在字符串的开头或结尾处。所以这应该是真的:
'#abc'.match(/\b#/)
Run Code Online (Sandbox Code Playgroud)
但它是 null,至少在 Firefox 和 Chrome 中是这样。知道为什么吗?
\b相当于(^\w|\w$|\W\w|\w\W). 您可能已经从mozilla 文档中阅读了以下内容:
单词边界匹配单词字符后跟非单词字符之间的位置,或者非单词字符后跟单词字符之间的位置,或者字符串的开头或字符串的结尾。
它写得不正确。它应该指定它与单词字符相邻时匹配字符串的开头或结尾。这就是在试图解释一些相当算法化的东西时写长句子而不是使用要点的问题:它很难阅读,因此很难校对。
来自 mozilla 以外来源的正确定义示例:
三种不同的位置都可以作为单词边界:
- 如果第一个字符是单词字符,则在字符串中的第一个字符之前。
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。