关于阅读 ES6- 正则 整理的问题

1、怎么声明一个正则

答:可通过下面几种方式进行声明
var r1 = new RegExp(/xyz/ig) // 正则为xyz 修饰符为 ig
var r2 = new RegExp(‘xyz’, ‘ig’) // 正则为xyz 修饰符为 ig
var r3 = new RegExp(/xyz/i, ‘g’) // 正则为xyz 修饰符为 g,覆盖了修饰符 i
var r4 = /xyz/ig // 正则为xyz 修饰符为 ig

2、怎么获取一个正则的修饰符

答:使用flags属性进行获取 :reg.flags

3、字符串有哪些方法是用了正则的

答:replace match split search replaceAll

4、正则的u修饰符有什么作用

答:可以有效处理码点值超过 \uffff的字符,即四个字节存储的UTF-16编码的字符

5、怎么判断一个正则有没有带 u修饰符

答:使用 unicode属性进行判断,例如
var reg1 = /aaa/u, reg2 = /asd/ ;
reg1.unicode // true
reg1.flags.includes(‘u’) // true
reg2.unicode // false

6、正则的y修饰符和g修饰符有什么区别

答:y和g修饰符都是全局进行查找
g修饰符每次都是从剩余位置中进行查找
y修饰符每次都是从剩余位置的第一个位置进行查找
例如:
var str = ‘aaa_aa_a’
var reg1 = /a+/g
var reg2 = /a+/y
reg1.exec(str) // 第一次返回 [‘aaa’] 第二次返回 [‘aa’] 第三次返回 [‘b’]
reg2.exec(str) // 第一次返回 [‘aaa’] 第二次从剩余字符串的 '_aa_a’的第一个位置进行匹配,返回null

7、怎么判断一个正则是否带有 y修饰符

答:使用sticky属性进行判断
var reg = /xyz/iguy
reg.sticky // true
reg.flags.includes(‘y’) // true

8、怎么获取正则的正文

答:使用 source属性进行获取
var reg = /asdf/ig
reg.source // ‘asdf’

9、正则的点字符(.)是否可以匹配任意单个字符

答:不能,例如 换行符 回车符 行分隔符 段分隔符就不能让 点字符进行匹配
ES6中增加了 s修饰符,以便 点字符可以匹配所有的字符
/a.b/.test(‘a\nb’) // false
/a.b/s.test(‘a\nb’) // true

10、ES6的先行断言是什么?

答:先行断行指的是:x只有在y前面才匹配,必须写成 /x(?=y)/ 的形式

11、ES6的先行否定断言是什么

答:先行否定断言指的是:x只有不在y前面才匹配,必须写成 /x(?!y)/的形式

12、ES6的后行断言是什么?

答:后行断言指的是:x只有在y后面才匹配,必须写成 /(?<=y)x/ 的形式

13、ES6的后行否定断言是什么?

答:后行否定断言:x只有不在y后面才匹配,必须写成 /(?<!y)x/ 的形式

14、ES6正则的具名组匹配是什么?

答:正则表达式当中,使用圆括号进行每个组的匹配,
并为每个组取个名字,形式为:/(?<变量名>正则字符)/
例如:
var reg = /(?a+)(<?bName>bbb)/
var res = reg.exec(‘aaaabbbb’)
res.groups.aName //‘aaaa’
res.groups.bName //‘bbb’
搭配解构赋值一起使用
let {groups: {aName, bName}} = res

猜你喜欢

转载自blog.csdn.net/qq_37600506/article/details/124416169
今日推荐