正则表达式

分组和引用

使用小括号()将字符作为一个最小单元,同时小括号还能记忆这个组合相匹配的字符串,再使用反斜杠引用前面分组的表达式,数字1表示第一个小括号。这时就可以实现前面组合的重复;

小括号组成分组,分组可以嵌套;

引用是以分组为前提的,应用的就是分组,分组可以嵌套,分组的顺序取决于分组符号的左侧部分的顺序。

(?:pattern)匹配pattern但不获取匹配结果,也就是这是一个非获取匹配

(pattern),匹配pattern同时获取匹配结果,这是一个获取匹配,可以供后面使用

正向肯定(否定)预查 反向肯定(否定)预查

正向肯定预查 (?=pattern) 在任何匹配pattern的地方开始匹配查找字符串,例如我想匹配Windows后面加数字,但是我只要Windows

var pattern=/Windows (?=d+)/ 可以匹配Windows 2000中的Windows,(匹配字符串Windows 2000,但是只获取pattern之前的字符串Windows,不获取pattern2000 )不能匹配Windows XP中的Windows

正向否定预查(?!pattern),在任何不匹配pattern字符串开始处匹配查找字符串

var pattern=/Windows (?!d+)/ 可以匹配Windows XP中的Windows 不能匹配Windows 2000中的Windows(匹配字符串Windows XP,但是只保留!pattern之前的Windows,不获取!pattern XP)

反向肯定预查(?<=pattern) 与正向肯定预查类似,只是方向相反 ,从匹配pattern之前查找字符串

var pattern=/(?<=d+) Windows/ 可以匹配2000 Windows中的Windows 不能匹配this is Windows中的Windows (2000 Windows,获取匹配pattern之后的字符串Windows,不保留pattern 2000)

反向否定预查(?<!pattern) 与正向否定预查类似,只是方向相反 ,从不匹配pattern之前查找字符串

var pattern=/(?<!d+) Windows/ 可以匹配this is Windows中的Windows 不能匹配2000 Windows 中的Windows (this is Windows,获取匹配!pattern之后的字符串Windows,不保留!pattern this is)

 创建正则表达式:

1 var reg=new RegExp('d{2,3}','ig');

2 var reg=/d{2,3}/ig;

正则对象的方法:

1 test  判断是否匹配pattern,返回true false

2 exec 检测是否有匹配的值,有则返回一个数组,否则返回null

字符串的方法:

1 match 找到匹配的值,有返回一个数组,没有返回null

let reg = /s/ig; console.log("studys".match(reg)); ///[ 's', 's' ]

2 search 匹配是否有匹配值,返回第一个符合的子字符串的起始位置,没有返回-1

let reg = /s/ig; console.log("studys".search(reg)); ///打印0,有两个s,只打印了第一个位置的s

3 replace 替换正则表达式的值

let reg = /s/ig; console.log("studys".replace(reg,"***")); /// 返回***tudy***

demo:没有分组

 

4 split 把字符串按pattern分割成数组

let reg = /s/ig; console.log("goodstudysboy".split(reg)); ///[ 'good', 'tudy', 'boy' ]

 正则表达式从文本头部向尾部开始解析,文本尾部方向,称为“前”

 前瞻,就是在正则表达式匹配到规则的时候,向前检测是否符合断言,后顾/后瞻 方法相反

前瞻reg(?=assert) 匹配reg之后还要查看是否符合断言assert,如果符合就成功,但是只取匹配的部分,断言只是判断不包含在匹配结果中

正则表达式属性:

source 正则表达式的文本字符串

global 是否是全文搜索,默认false,只读

ignoreCase:是否大小写敏感,默认false,只读

multiline:多行搜索,默认值是false,只读

lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置(全局搜索的时候正则表达式对象,每次执行的

结果不一样就是lastIndex的影响),所以判断是否符合时test方法不要加g,如果需要知道具体的信息可以是用exec方法)

理解(正向|反向)(肯定|否定)预查可以参考:https://www.jb51.net/article/166953.htm  

https://blog.csdn.net/qq_34763438/article/details/77856204

原文地址:https://www.cnblogs.com/xiaofenguo/p/12177089.html