JS--正则表达式

目录

ECMASCRIPT 6

1、字符串的正则方法

2、u修饰符【Unicode模式】

3、RegExp.prototype.unicode 属性       

4、y修饰符【“粘连”(sticky)修饰符】

5、RegExp.prototype.sticky 属性

6、RegExp.prototype.flags 属性

7、s 修饰符:dotAll 模式【具体的你们自己看书吧~】

8、后行断言

9、Unicode 属性类

10、具名组匹配 【PS:这个感觉很好玩,具体内容看大神详述吧~】

11、String.prototype.matchAll

ECMASCRIPT 5

1、字符类

2、重复

3、选择、分组和引用

4、修饰符

5、用于模式匹配的String方法

6、RegExp的属性

7、RegExp的方法

参考链接


ECMASCRIPT 6

http://es6.ruanyifeng.com/#docs/regex

1、字符串的正则方法

match()、replace()、search()、split()

2、u修饰符【Unicode模式】

用来正确处理大于\uFFFF的Unicode字符

(1)点字符(.)      在正则表达式中,含义是除了换行符以外的任意单个字符。对于码点大于0xFFFF的 Unicode 字符,点字符不能识别,必须加上u修饰符。

(2)Unicode字符表示法       ES6 新增了使用大括号表示 Unicode 字符,这种表示法在正则表达式中必须加上u修饰符,才能识别当中的大括号,否则会被解读为量词。

(3)量词      使用u修饰符后,所有量词都会正确识别码点大于0xFFFF的 Unicode 字符。

(4)预定义模式      u修饰符也影响到预定义模式,能否正确识别码点大于0xFFFF的 Unicode 字符。    

(5)i修饰符        有些 Unicode 字符的编码不同,但是字型很相近,比如,\u004B\u212A都是大写的K

3、RegExp.prototype.unicode 属性       

正则实例对象新增unicode属性,表示是否设置了u修饰符

4、y修饰符【“粘连”(sticky)修饰符】

y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。

5、RegExp.prototype.sticky 属性

y修饰符相匹配,ES6 的正则实例对象多了sticky属性,表示是否设置了y修饰符。

6、RegExp.prototype.flags 属性

ES6 为正则表达式新增了flags属性,会返回正则表达式的修饰符。

7、s 修饰符:dotAll 模式【具体的你们自己看书吧~】

以下四个字符属于“行终止符”。

  • U+000A 换行符(\n
  • U+000D 回车符(\r
  • U+2028 行分隔符(line separator)
  • U+2029 段分隔符(paragraph separator)

8、后行断言

9、Unicode 属性类

ES2018 引入了一种新的类的写法\p{...}\P{...},允许正则表达式匹配符合 Unicode 某种属性的所有字符。

10、具名组匹配 【PS:这个感觉很好玩,具体内容看大神详述吧~】

正则表达式使用圆括号进行组匹配

ES2018 引入了具名组匹配(Named Capture Groups),允许为每一个组匹配指定一个名字,既便于阅读代码,又便于引用

const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;

有了具名组匹配以后,可以使用解构赋值直接从匹配结果上为变量赋值。 

如果要在正则表达式内部引用某个“具名组匹配”,可以使用\k<组名>的写法。

11、String.prototype.matchAll

如果一个正则表达式在字符串里面有多个匹配,现在一般使用g修饰符或y修饰符,在循环里面逐一取出。

ECMASCRIPT 5

1、字符类

将直接量字符单独放进方括号内就组成了字符类,一个字符类可以匹配他所包含的任意字符

栗子 :   /[abc]/    和字母'a','b','c'中任意一个都匹配

^  符号定义否定字符类,匹配所有不包含在方括号内的字符

栗子: /[^abc]/  匹配到的是'a','b','c'之外的所有字符

连字符-  表示字符范围

栗子: /[a-z]/  匹配拉丁字母表中的小写字母

[\s\d]  匹配任意空白符或者数字

2、重复

{n,m} 匹配前一项至少n次,但不能超过m次

栗子:/\d{2,4}/    匹配2-4个数字

{n,} 匹配前一项n次或者更多次

{n}  匹配前一项n次

?    匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}

栗子:/\w{3}\d?/   精确匹配三个单词和一个可选数字

+    匹配前一项1次或者多次,等价于{1,}

*     匹配前一项0次或者多次,等价于{0,}

非贪婪的重复---尽可能少的匹配  加一个'?'    栗子: +?

3、选择、分组和引用

|    用于分隔供选择的字符

圆括号   把单独的项组合成子表达式 || 在完整的模式中定义子模式  ||  允许在同一正则表达式的后部引用前面的子表达式

栗子:  /([' "])[^' "]*\1/   匹配左侧和右侧的引号,\1匹配到的是第一个带圆括号的子表达式所匹配的模式【左侧的的引号必须和右侧的引号相匹配】

正则表达式不允许用双引号扩起的内容中有单引号

4、修饰符

i      模式匹配是不区分大小写的

g     模式匹配是全局的,找到所有的匹配,而不是在找到第一个之后就停止

m    多行模式中执行匹配【在这种模式下,如果带检索的字符串包含多行,那么^和$锚字符除了匹配整个字符串的开始和结尾之外,还能匹配每行的开始和结尾】,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束

5、用于模式匹配的String方法

String.search(正则表达式)   不支持全局检索

replace(正则表达式要进行替换的字符串)   用以执行检索与替换操作【这里不做详述,有需要的自己google~】

match(正则表达式)   返回的是一个由匹配结果组成的数组。如果该正则表达式设置了修饰符g,则该方法返回的数组包含字符串中的所有匹配结果

split()     用以将调用它的字符串拆分为一个子串组成的数组,使用的分隔符是split的参数【参数也可以是一个正则表达式】

6、RegExp的属性

source是一个只读的字符串,包含正则表达式的文本

global是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g

ignoreCase是一个只读的布尔值,用以说明正则表达式是否带有修饰符i

multiline是一个只读的布尔值,用以说明正则表达式是否带有修饰符m

lastIndex是一个可读/写的整数。

7、RegExp的方法

exec()    执行模式匹配,参数是一个字符串,返回一个数组或是null【属性index是包含了发生匹配的字符位置,属性input引用的是正在检索的字符串】当调用exec()的正则表达式对象具有修饰符g时,她将把当前正则表达式对象的lastIndex属性设置为紧挨着匹配字串的字符位置。当同一个正则表达式第二次调用exec()时,他将从lastIndex属性所指示的字符处开始检索。如果exec()没有发现任何匹配结果,他会将lastIndex重置为0

test()    参数是一个字符串,检测字符串,如果包含匹配结果返回true

参考链接

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

https://www.runoob.com/regexp/regexp-intro.html

https://segmentfault.com/a/1190000018963103

附:常用的正则表达式  https://blog.csdn.net/baidu_33591715/article/details/80470293

小工具:https://regexper.com/

https://www.w3cfuns.com/tools.php?mod=regex   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值