(共566篇)
全部分类

正向肯定和否定查找
[ JS基础 ] 

正向肯定和否定查找

x(?=y)正向肯定查找

x(?=y)在正则表达式中,表示字符 x 后必须跟一个 y 才算匹配项。比如:

1
2
3
4
5
<script>
    var res;
    res = "JackMa JackLv JackMang".match(/Jack(?=M)/g);
    console.log(res);
</script>

案例源码

这里要注意返回的匹配项中,是不包含()内字符的,所以两次匹配内容都只有Jack

但是这样返回的匹配项都是一模一样的,有什么用呢?再来看一个案例:

1
2
3
4
5
6
<script>
    var res;
    // 找到字符串中所有以1294结尾的手机号码的前7位数字
    res = "18516081294  18516081293 18516071294".match(/\d{7}(?=1294)/g);
    console.log(res);
</script>

案例源码

x(?!y)正向否定查找

x(?!y)在正则表达式中和x(?=y)刚好相反,表示字符x后面没有跟随字符y的才算做匹配项,还是以手机号码为例,这次我们查找所有不是以1294结尾的手机号码的前 7 位:

1
2
3
4
5
6
<script>
    var res;
    // 找到字符串中所有不是以1294结尾的手机号码的前7位数字
    res = "18516081294  18516081293 18516071294".match(/185\d{4}(?!1294)/g);
    console.log(res);
</script>

案例源码