博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js正则表达式中的正向肯定预查和正向否定预查
阅读量:4994 次
发布时间:2019-06-12

本文共 1488 字,大约阅读时间需要 4 分钟。

对于没有使用过这几个表达式的人,应该对这个概念都有点不太理解,下面就以实际例子说明这几个表达式的用户。

一、?:pattern——匹配检验:

会作为匹配校验,是一个非获取匹配,并出现在匹配字符结果里面,比如 windows(?:2000|NT|98) 等同于 windows2000|windowsNT|windows98
就是一个比用 | 更简略的表达式,跟直接用 | 的区别是不作为子匹配返回:

例1:

var reg1=/windows(?:2000|NT|98)/ivar reg2=/windows(2000|NT|98)/ivar str='windows2000'str.match(reg1) // ["windows2000", index: 0, input: "windows2000"]str.match(reg2) // ["windows2000", "2000", index: 0, input: "windows2000"]reg1.test(str)    //truereg2.test(str)    //true

可以注意到 第一个正则匹配返回的结果中没有子匹配的返回内容

二、?=pattern——正向肯定预查:

会作为匹配校验,是一个非获取匹配,不会出现在匹配结果字符串里面。

示例:

var reg=/windows(?=2000|NT|98)/ivar str='windows2000'var str2='windows xp'str.match(reg) // ["windows", index: 0, input: "windows2000"]str2.match(reg)    //null

其中,

1. 匹配windows,如果没有匹配到,那么就返回为空
2. 其后是否有2000|NT|98其中的一个,如果有,那么就返回 windows,没有就返回为空

三、?!pattern——正向否定预查:

在任何不匹配pattern的字符串开始处匹配查找字符串,也是一个非获取匹配,不会出现在匹配结果字符串里面。
示例:

var reg=/windows(?!2000|NT|98)/ivar str='windows2000'var str2='windows xp'str.match(reg) // nullstr2.match(reg)    //["windows", index: 0, input: "windows xp"]

可以看到,跟上边正想肯定预查刚好相反。

上边的例子是?!前边直接匹配字符串,还有一种情况,就是元字符,如下例:

var reg=/windows*(?!2000|NT|98)/i    var str='windows2000'var str2='windows xp'str.match(reg) // ["window", index: 0, input: "windows2000"]str2.match(reg)    //["windows", index: 0, input: "windows xp"]

*在正则表达式中的意思是匹配前一个子表达式0次或者多次,那么对于str,能够匹配 ?! 后边的表达式,所以取反,即不匹配*前边的表达式(这里是 s ),匹配结果为window,str2中恰好相反。

注:下边这个例子可能不太好理解,多写几个表达式熟悉下慢慢就理解了。

转载于:https://www.cnblogs.com/xyyt/p/8758993.html

你可能感兴趣的文章
[转载]我的PMP复习备考经验谈(上篇)—— 一本关于PMP备考的小指南
查看>>
Mysql命令集
查看>>
记java应用linux服务单个CPU使用率100%分析
查看>>
将文件字节输出流写入到文本中
查看>>
Linux编程之给你的程序开后门
查看>>
Ubuntu下Hadoop的安装和配置
查看>>
VS2010中生成遇到的 web.config 问题
查看>>
Nginx安装部署(反向代理与负载均衡)
查看>>
2018年最新小程序一键智能生成平台限时限量销售!
查看>>
集合遍历过程iterator, 添加删除元素报异常
查看>>
echarts一些笔记
查看>>
最长上升子序列
查看>>
Java-面向对象
查看>>
salesforce 零基础学习(四十四)实现checkbox列表简单过滤功能
查看>>
Android 异步下载
查看>>
c# 中 利用 CookieContainer 对 Cookie 进行序列化和反序列化校验
查看>>
Leetcode 743. Closest Leaf in a Binary Tree
查看>>
如何用Java实现反转排序
查看>>
自己动手写字符串库函数 一(C语言实现) 分类: C语言学习 ...
查看>>
说说接口封装
查看>>