正则的扩展

前端之家收集整理的这篇文章主要介绍了正则的扩展前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

RegExp构造函数

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

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

u修饰符
含义为Unicode模式,用来正确处理大于\uFFF的Unicode字符
正确来说,会正确处理四个字节的UTF-16编码
/^\uD83D/u.test('\uD83D\uDC2A')
//false
/^\uD83D/u.test('\uD83D\uDC2A')
//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修饰符
全局匹配,后一个匹配都是从上一次匹配成功的下一个位置开始的。

猜你在找的正则表达式相关文章