正则中的\b 与 \B

正则中的\b 与 \B

正则中的 \b 与 \B

  • 任何字符都一个显性的位置,空格也有。
  • 但是每个字符之间又有一个隐形的位置。
  • 而 \b 则用来表示此隐形位置,如断言一样不匹配内容,但会影响匹配目标的结果

举个例子

It’s a nice day today

\b 匹配这样一个位置,就是它的前或后只能有一个为 \w

我想匹配 nice 这个单词除了使用 nice 匹配。还可以使用 \bnice\b 。这样就获取到了单个完整的单词。

然而,需要匹配比如 nicely 时, nice 同样能匹配到, 但\bnice\b不行了。而\bnice 可以了。引用上面的话 **\b**** 匹配这样一个位置,就是它的前或后只能有一个为 ****\w**,显然后面的 \b 没有满足这条规则。

> 而大写的\b, 也就是 \B。

要更加实用一些。

它匹配前后都为\w的目标

比如,转小驼峰连字符

1
2
var str = "onClick";
str.replace(/\B([A-Z])/g, "-$1").toLocaleLowerCase();

注意看这里的 \B, 如果不使用它。当我们传入的str是大驼峰字符串。比如是 OnClick,此表达式会将其转为 -on-click。 这明显兼容性太差。加入\B 则可保证该表达式只对前后都有\w 的大写字母,进行 replace 操作, 自然不会去替换第一个大写字母了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!