(/\w+\b Byron/).test('Welcome Byron')
/w+b Byron/为什么中间要加一个空格,否则就不匹配Welcome Byron? b不是已经表示了空格了吗?
空格就匹配空格,\b
表示单词边界,但在匹配时不消费字符,这个例子里去掉\b
也可以匹配
\b
是匹配字符串开头结尾及空格回车等的位置,即单词边界, 不会匹配空格符本身。\s
则是匹配空白字符本身、空格符本身、换行符本身。
我怎么记得\s表示空格
首先:\w
匹配的是[A-Za-z0-9_]
,它是不包括空格的。\w+
贪婪匹配最多能匹配Welcome。\b
的作用是匹配单词的边界,如果单词间以空格作为分割,它就是指单词和空格间的位置。注意,不是匹配空格。
所以上面的正则并没有匹配空格,所以要加空格。
如果不加空格,需要使用\s
来匹配空格\w+\b\sByron
或\w+\sByron
\b^$
这3个符号是 零宽断言
,它们只匹配位置,不消耗字符。
所以,你还是需要一个 空格
或 \s
去匹配空格字符。
\b
并不匹配空格,请详细阅读文档。