关于正则表达式中的\b

\b表示单词边界,但其匹配值不太好界定,做几个例子加以理解

var reg = /a\b.*h.*/;
reg.test("a,china");//true

这个很好理解,逗号将单词分割了,所以很容易匹配到,下面稍加改动

var reg = /a.*\bh.*/;
reg.test("a,china");//false

字符串里h前面是个字母,不论我们往哪个方向,a,c还是后者字母h,二者之间没有明显分割,所以可以认为字母和字母之间是匹配不到\b的。接下来分别对汉字,数字,下划线做测试

var reg = /a.*\bh.*/;
reg.test("a,是hina");//true

以防万一做个类似例子:

var reg = /是\b.*h.*/;
reg.test("a,是hina");//true

说明汉字和字母之间是可以看做存在单词边界的,再看看其他的

var reg = /a.*\bh.*/;
reg.test("a,9hina");//false

var reg = /a.*\bh.*/;
reg.test("a,_hia");//false

var reg = /a.*\bh.*/;
reg.test("a,-hina");//true
var reg = /a.*\bh.*/;
reg.test("a,$hina");//true

而下划线,数字和字母相邻是匹配不到单词边界的,其他的符号做了几个测试都能够匹配到。现在能够比较清楚的认识到单词边界就针对英文来讲除了数字和下划线其他符号及汉字都可以视为和字母之间存在单词边界进而匹配成功。

posted @ 2020-08-07 21:55  谔定浣的熊  阅读(282)  评论(0编辑  收藏  举报