正则表达式 - 元字符 \b 与 \B

正则表达式 - 元字符 正则表达式 - 元字符

\b\B 是正则表达式中的两个特殊元字符,用于匹配单词边界。


单词边界 \b

在正则表达式中,\b 是一个特殊的元字符,表示单词边界。它匹配一个单词的开始或结束的位置,而不匹配任何实际的字符。

具体来说,\b 匹配以下三种情况之一:

  • 单词的开头:如果 \b 出现在一个字母或数字之前,或者在字符串的开头,它会匹配一个单词的开始位置。
  • 单词的结尾:如果 \b 出现在一个字母或数字之后,或者在字符串的末尾,它会匹配一个单词的结束位置。
  • 单词的内部:如果 \b 出现在两个连续的字母或数字之间,它不会匹配任何内容,因为没有单词边界。

以下是一些元字符 \b 的实例:

  • 正则表达式 \bword\b 匹配整个单词 "word",但不匹配 "words" 或 "sword"。尝试一下 »
  • 正则表达式 \b\d+\b 匹配一个完整的数字,例如 "123",但不匹配 "abc123"。尝试一下 »
  • 正则表达式 \b[A-Z]+\b 匹配一个完整的大写字母单词,例如 "HELLO",但不匹配 "hello"。尝试一下 »

需要注意的是,\b 是一个零宽度断言,它不匹配实际的字符,只匹配位置,因此,当你想要匹配一个实际的字符时,不要使用 \b,而应该使用其他字符或字符组合。

实例代码

// 使用 \b 进行单词匹配
var patternWord = /\bword\b/;
var textWord = 'This is a word in a sentence.';

if (patternWord.test(textWord)) {
    document.write('找到匹配的单词:', patternWord.exec(textWord)[0]);
} else {
    document.write('没有找到匹配的内容!');
}

非单词边界 \B

在正则表达式中,\B\b 的反义符号,它表示非单词边界,即匹配不在单词边界处的位置。

具体来说,\B 匹配以下情况之一:

  • 单词的内部:如果 \B 出现在两个连续的字母或数字之间,它会匹配这两个字符之间的位置,表示它们不是单词的边界。
  • 非单词的开头或结尾:如果 \B 出现在一个字母或数字之前或之后,它会匹配这个位置,表示它不是单词的开头或结尾。

以下是一些元字符 \B 的实例:

  • 正则表达式 \Bword\B 匹配 "sword1" 中的 "word",但不匹配 "password" 或 "words"。尝试一下 »
  • 正则表达式 \B\d+\B 匹配 "abc123def" 中的 "123",但不匹配 "123" 或 "abc123xyz"。 尝试一下 »
  • 正则表达式 \B[A-Z]+\B 匹配 "HELLO WORLD" 中的 "ELL" 和 "ORL",但不匹配 "HELLO" 或 "WORLD"。 尝试一下 »

需要注意的是,与 \b 不同,\B 也是一个零宽度断言,只匹配位置而不匹配实际的字符。

实例代码

// 使用 \B 进行非单词匹配
var patternWord = /\Bword\B/;
       
// 这个就找到了
var textWord = 'This is a password123 in a sentence.';
       
// 这个就找不到了
//var textWord = 'This is a password in a sentence.';
if (patternWord.test(textWord)) {
    document.write('找到匹配的单词:', patternWord.exec(textWord)[0]);
} else {
    document.write('没有找到匹配的内容!');
}

正则表达式 - 元字符 正则表达式 - 元字符