词边界断言:\b, \B

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

单词边界断言检查字符串中的当前位置是否是单词边界。单词边界是指下一个字符是单词字符而前一个字符不是单词字符,反之亦然。

语法

正则表达式
\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® 2026 语言规范
# prod-Assertion

浏览器兼容性

另见