正则表达式之词边界:\b
词边界 \b 是一种检查,就像 ^ 和 $ 一样。
当正则表达式引擎(实现正则表达式搜索的程序模块)遇到 \b 时,它会检查字符串中的位置是否是词边界。
有三种不同的位置可作为词边界:
- 在字符串开头,如果第一个字符是单词字符
\w。 - 在字符串中的两个字符之间,其中一个是单词字符
\w,另一个不是。 - 在字符串末尾,如果最后一个字符是单词字符
\w。
例如,可以在 Hello, Java! 中找到 \bJava\b 的匹配项,其中 Java 是一个独立的单词,而在 Hello, JavaScript! 中则不行。
alert( "Hello, Java!".match(/\bJava\b/) ); // Java alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
在字符串 Hello, Java! 中,以下位置对应于 \b:

因此,它与模式 \bHello\b 相匹配,因为:
- 字符串的开头符合第一个检查
\b。 - 然后匹配了单词
Hello。 - 然后与
\b再次匹配,因为我们在o和逗号之间。
所以模式 \bHello\b 会匹配,但 \bHell\b 不会匹配(因为在 l 之后没有单词边界),Java!\b 也不会匹配(因为感叹号不是单词字符 \w,所以其后没有词边界)。
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello alert( "Hello, Java!".match(/\bJava\b/) ); // Java alert( "Hello, Java!".match(/\bHell\b/) ); // null(无匹配项) alert( "Hello, Java!".match(/\bJava!\b/) ); // null(无匹配项)
\b 既可以用于单词,也可以用于数字。
例如,模式 \b\d\d\b 查找独立的两位数。换句话说,它查找的是两位数,其周围是与 \w 不同的字符,例如空格或标点符号(或文本开头/结尾)。
alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78 alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56
❗️ 词边界
\b不适用于非拉丁字母词边界测试
\b检查该位置的一侧是否匹配\w,而另一侧则不匹配 “\w”。但是,
\w表示拉丁字母a-z(或数字或下划线),所以此检查不适用于其他字符,如西里尔字母(cyrillic letters)或象形文字(hieroglyphs)。
浙公网安备 33010602011771号