正则表达式 - 元字符 \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('没有找到匹配的内容!');
}
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" 或 "abc123"。 尝试一下 > - 正则表达式
\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('没有找到匹配的内容!');
}
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('没有找到匹配的内容!');
}
尝试一下 >