谈谈js中的正则表达式第一篇之正向肯定预查和正向否定预查
来源:互联网 发布:军警大衣淘宝网 编辑:程序博客网 时间:2024/05/21 09:59
之前在别人写的瀑布流案例中,发现有这样的正则写法:/<a(?:.|\n|\r|\s)*?a>/gi
对于?: 的正则表示方法没有看到过,一下子蒙了,决定好好补充下正则表达式的知识。
引用维基百科对正则表达式的概念,正则表达式的意思是使用单个字符串来描述、匹配一系列符合某个语句规则的字符串搜索模式。
一、?:pattern
(?:pattern)会作为匹配检验,并出现在匹配字符结果里面,但是跟(...)的区别是,它不作为子匹配返回;
这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
例1:industry.match(/industr(?:y|ies)/i) // ["industry", index: 0, input: "industry"]
industry.match(/industr(y|ies)/i) // ["industry", "y", index: 0, input: "industry"]
可以注意到 第一个正则匹配返回的结果中没有子匹配的返回内容
二、?=pattern
(?=pattern) 正向肯定预查 会作为匹配校验,是一个非获取匹配,不会出现在匹配结果字符串里面
例2: windows2000.match(/windows(?=2000|2005)/ig // [windows]
三、?!pattern
(?!patter) 正向反向预查 在任何不匹配pattern的字符串开始处匹配查找字符串,也是一个非获取匹配,不会出现在匹配结果字符串里面
例3:windows2000.match(/windows(?!2000|2005)/g) //null
windows2000.match(/windows*(?!2000|2005)/g) //[window]
解释下最后一个例子:*在正则表达式中的意思是匹配前一个子表达式0次或者多次,
例如zo*可以匹配z 、zo 、zoo
windows2000.match(/windows*(?!2000|2005)/g) 中 windows*可以匹配window ,s2000 匹配的是(?!2000|2005)
注:本文参考文:https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
- 谈谈js中的正则表达式第一篇之正向肯定预查和正向否定预查
- 正则表达式: 正向预查和负向预查
- 正则表达式: 正向预查和负向预查
- 【正则】正向预查
- 正则表达式(js) 含有(正向预查和负向预查)
- 正则表达式:正向预查与反向预查
- JS 之 (五)正向反向预查、正则案例、贪吃蛇案例
- 正则表达式之正向预搜索、反向预搜索
- 正则表达式中的反向预搜索和正向预搜索的使用方法
- 正则表达式之预查
- 正则表达式 正向前瞻
- 正则表达式 正向前瞻
- 正则表达式- 预查
- 正则表达式中的正/反向预查
- 正则表达式中的正/反向预查
- PHP正则:正向/反向预搜索
- 正则表达式 零宽断言(正向和负向)
- Python正则表达式前向/后向搜索的肯定/否定模式的区别和示例
- Python 操作 MongoDB
- Apache无法启动解决方案
- JVM堆内存设置原理
- 正则表达式的匹配
- control.exe进入windows控制面板
- 谈谈js中的正则表达式第一篇之正向肯定预查和正向否定预查
- 【java】EJB整体概述
- mongodb,redis,mysql 简要对比
- 【知识整理】Spring整合SpringMVC
- 银行市场风险管理系统实施中,几个知名的厂商的系统各有什么特色?
- 【UML】几种关系和图之间的联系
- 第二周(2)——前期准备的结束
- Ubuntu+Apache+PHP+Mysql+svn环境搭建
- I/O重定向和管道