词边界断言:\b、\B
**词边界断言** 检查字符串中的当前位置是否是词边界。词边界是下一个字符是词字符而前一个字符不是词字符的地方,反之亦然。
语法
正则表达式
\b
\B
描述
\b
断言字符串中的当前位置是词边界。\B
否定断言:它断言当前位置不是词边界。两者都是断言,因此与其他字符转义或字符类转义不同,\b
和 \B
不消耗任何字符。
词字符包括以下内容
- 字母 (A–Z, a–z)、数字 (0–9) 和下划线 (_)。
- 如果正则表达式支持 Unicode 且
i
标志已设置,则其他通过大小写折叠规范化为上述字符之一的 Unicode 字符。
词字符也与 \w
字符类转义 匹配。
越界输入位置被视为非词字符。例如,以下匹配成功
js
/\ba/.exec("abc");
/c\b/.exec("abc");
/\B /.exec(" abc");
/ \B/.exec("abc ");
示例
检测单词
以下示例检测字符串是否包含单词 "thanks" 或 "thank you"
js
function hasThanks(str) {
return /\b(thanks|thank you)\b/i.test(str);
}
hasThanks("Thanks! You helped me a lot."); // true
hasThanks("Just want to say thank you for all your work."); // true
hasThanks("Thanksgiving is around the corner."); // false
警告:并非所有语言都有明确定义的词边界。如果您使用的是中文或泰语等没有空格分隔符的语言,请使用更高级的库,例如Intl.Segmenter
来搜索单词。
规范
规范 |
---|
ECMAScript 语言规范 # prod-Assertion |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。