加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则的扩展

发布时间:2020-12-14 00:41:40 所属栏目:百科 来源:网络整理
导读:RegExp构造函数 new RegExp(/xyz/ig,'i').flags//i默认第二个参数i会覆盖掉原有正则表达式的修饰符 字符串对象共有4个方法,可以使用正则表达式:match(),replace(),search()和split u修饰符含义为Unicode模式,用来正确处理大于uFFF的Unicode字符正确来说

RegExp构造函数

new RegExp(/xyz/ig,'i').flags
//i
默认第二个参数i会覆盖掉原有正则表达式的修饰符

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

u修饰符
含义为Unicode模式,用来正确处理大于uFFF的Unicode字符
正确来说,会正确处理四个字节的UTF-16编码
/^uD83D/u.test('uD83DuDC2A')
//false
/^uD83D/u.test('uD83DuDC2A')
//true

点字符
点字符在正则表达式中,含义是除换行符以外的任意单个字符,对于码点大于0xFFFF的Unicode字符,点字符不能识别必须加上u修饰符。
var s = "123";
/^.$/.test(s);//false
/^.$/u.test(s);true

Unicode字符表示法
ES6增加了使用大括号表示Unicode字符,这种表示法在正则表达式中必须加上u修饰符,才能识别。

/u{20BB7}/u.test('吉')//true

量词
使用u修饰符之后,所有量词都能正确识别码点大于0xFFFF的Unicode字符
/吉{2}/.test('吉吉')
//false
/吉{2}/.test('吉吉')
//true
预定义模式
u修饰符也影响到预定义模式,能否正确识别码点大于0xFFFF的Unicode字符
'S'是预定义模式,匹配所有不是空格的字符。只有加了u修饰符,才能够正确匹配码点大于0xFFFF的Unicode字符
/^S$/.test('吉') //false
/^S$/u.test('吉') //true

i 修饰符
有些Unicode字符的编码不同,但是字型很近,比如,u004B与u212A都是大写的K
/[a-z]/i.test('u212A') //false
/[a-z]/iu.test('u212A') //true

y修饰符
全局匹配,后一个匹配都是从上一次匹配成功的下一个位置开始的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读