您的位置 首页 java

JavaScript,ES9,正则表达式反向断言,对匹配进行筛选

正则表达式反向断言

ES9支持反向断言,通过对匹配结果前面的内容进行判断,对匹配进行筛选。

非获取匹配:

组group的概念,用()包含的是组,里面的数据会获取供以后使用,这叫获取匹配,通过Match.group(index)获取,第一个group从1开始,index=0表示获取整个匹配字符串,非获取匹配:正向表示匹配前面,反向表示匹配后面。

(?=pattern) :正向肯定预查,在任何匹配pattern的 字符串 开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“ Windows2000 ”中的“Windows”,但不能匹配“ Windows3.1 ”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?!pattern): 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

(?<=pattern) :反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。

(?<!pattern) :反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。

代码案例

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta  charset ="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>正则扩展-正则表达式反向断言</title>
</head>
<body>
    < script >
        //声明字符串
        let str = 'JS5211314你知道么555啦啦啦';
        //正向断言
        const reg = /d+(?=啦)/;
        const result = reg.exec(str);

        //反向断言
        const reg = /(?<=么)d+/;
        const result = reg.exec(str);
        console.log(result);
    </script>
</body>
</html>  

文章来源:智云一二三科技

文章标题:JavaScript,ES9,正则表达式反向断言,对匹配进行筛选

文章地址:https://www.zhihuclub.com/182740.shtml

关于作者: 智云科技

热门文章

网站地图