断言的概念:
断言是用来判断一个字符是否出现在字符串的某个位置,但不包括该字符本身。
断言的作用:
1. 可以提高正则表达式的匹配效率,减少不必要的匹配。
2. 可以提高代码的可读性。
代码实现
1. 正向断言
// 声明一个字符串
const str = "word5211314世界大爆炸777轰炸大楼";
// 正向断言
const s = /\d+(?=轰)/;
const result = s.exec(str);
console.log(result);
我们可以看出这里匹配到的是数字777,原因在于通过正向断言去判断匹配,在轰这个字符左边的数字,注意一个点(这里指的是相邻),不会匹配到前面的5211314;
2. 反向断言
// 反向断言
const d = /(?<=炸)\d+/;
const result2 = d.exec(str);
console.log(result2);
这里通过反向断言判断,去匹配与炸这个字符串相邻的右边的数字字符
3. 正向断言和反向断言相结合
// 正向断言和反向断言结合使用
const e = /(?<=\d)\D+(?=\d)/;
const result3 = e.exec(str);
console.log(result3);
该判断匹配的为左边是数字,右边是数字的字符串,也就是“世界大爆炸”;
总结:
1. 正向断言和反向断言的区别
正向断言:(?=pattern)
反向断言:(?<=pattern)
正向断言和反向断言的区别在于,前者是从字符串的开头开始匹配,后者是从字符串的结尾开始匹配。
2. 正向断言和反向断言的使用场景:
1. 防止匹配到不期望的字符。
2. 提高匹配效率。
3. 提高代码的可读性。
4. 实现一些复杂的匹配逻辑。
例如:匹配字符串中的数字,字母,汉字,以及一些特殊符号,但不包括数字、字母、汉字、特殊符号本身。