前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则的扩展

正则的扩展

原创
作者头像
李才哥
修改2021-02-23 14:31:47
3900
修改2021-02-23 14:31:47
举报
文章被收录于专栏:李才哥李才哥

正则的扩展

RegExp 构造函数

第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符

第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝

ES5 不允许此时使用第二个参数添加修饰符,否则会报错

ES6 改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符

字符串的正则方法

字符串对象共有 4 个方法,可以使用正则表达式:match()、replace()、search()和split()

u 修饰符

ES6 对正则表达式添加了u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符

点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符

对于码点大于0xFFFF的 Unicode 字符,点字符不能识别,必须加上u修饰符

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

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

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

RegExp.prototype.unicode 属性

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

y 修饰符

ES6 还为正则表达式添加了y修饰符,叫做“粘连”(sticky)修饰符

RegExp.prototype.sticky 属性

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

RegExp.prototype.flags 属性

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

s 修饰符:dotAll 模式

正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是有两个例外

一个是四个字节的 UTF-16 字符,这个可以用u修饰符解决;另一个是行终止符

这被称为dotAll模式,即点(dot)代表一切字符。所以,正则表达式还引入了一个dotAll属性,返回一个布尔值,表示该正则表达式是否处在dotAll模式

后行断言

”先行断言“指的是,x只有在y前面才匹配,必须写成/x(?=y)/

“后行断言”正好与“先行断言”相反,x只有在y后面才匹配,必须写成/(?<=y)x/

Unicode 属性类

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

具名组匹配

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

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

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

String.prototype.matchAll

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RegExp 构造函数
    • 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符
      • 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝
        • ES5 不允许此时使用第二个参数添加修饰符,否则会报错
          • ES6 改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符
          • 字符串的正则方法
            • 字符串对象共有 4 个方法,可以使用正则表达式:match()、replace()、search()和split()
            • u 修饰符
              • ES6 对正则表达式添加了u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符
                • 点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符
                  • 对于码点大于0xFFFF的 Unicode 字符,点字符不能识别,必须加上u修饰符
                    • ES6 新增了使用大括号表示 Unicode 字符,这种表示法在正则表达式中必须加上u修饰符,才能识别当中的大括号,否则会被解读为量词
                      • 使用u修饰符后,所有量词都会正确识别码点大于0xFFFF的 Unicode 字符
                        • u修饰符也影响到预定义模式,能否正确识别码点大于0xFFFF的 Unicode 字符
                        • RegExp.prototype.unicode 属性
                          • 正则实例对象新增unicode属性,表示是否设置了u修饰符
                          • y 修饰符
                            • ES6 还为正则表达式添加了y修饰符,叫做“粘连”(sticky)修饰符
                            • RegExp.prototype.sticky 属性
                              • 与y修饰符相匹配,ES6 的正则实例对象多了sticky属性,表示是否设置了y修饰符
                              • RegExp.prototype.flags 属性
                                • ES6 为正则表达式新增了flags属性,会返回正则表达式的修饰符
                                • s 修饰符:dotAll 模式
                                  • 正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是有两个例外
                                    • 一个是四个字节的 UTF-16 字符,这个可以用u修饰符解决;另一个是行终止符
                                      • 这被称为dotAll模式,即点(dot)代表一切字符。所以,正则表达式还引入了一个dotAll属性,返回一个布尔值,表示该正则表达式是否处在dotAll模式
                                      • 后行断言
                                        • ”先行断言“指的是,x只有在y前面才匹配,必须写成/x(?=y)/
                                          • “后行断言”正好与“先行断言”相反,x只有在y后面才匹配,必须写成/(?<=y)x/
                                          • Unicode 属性类
                                            • ES2018 引入了一种新的类的写法\p{...}和\P{...},允许正则表达式匹配符合 Unicode 某种属性的所有字符
                                            • 具名组匹配
                                              • 正则表达式使用圆括号进行组匹配
                                                • 有了具名组匹配以后,可以使用解构赋值直接从匹配结果上为变量赋值
                                                  • 如果要在正则表达式内部引用某个“具名组匹配”,可以使用\k<组名>的写法
                                                  • String.prototype.matchAll
                                                    • 如果一个正则表达式在字符串里面有多个匹配,现在一般使用g修饰符或y修饰符,在循环里面逐一取出
                                                    领券
                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档