正则表达式中的u、i、y修饰符
(4)预定义模式
u修饰符也影响到预定义模式,能否正确识别码点大于0xFFFF的Unicode字符。
/^S$/.test('') // false
/^S$/u.test('') // true
上面代码的S是预定义模式,匹配所有不是空格的字符。只有加了u修饰符,它才能正确匹配码点大于0xFFFF的Unicode字符。利用这一点,可以写出一个正确返回字符串长度的函数。
function codePointLength(text) {
var result = text.match(/[sS]/gu);
return result ? result.length : 0;
}
var s = '';
s.length // 4
codePointLength(s) // 2
(5)i修饰符
有些Unicode字符的编码不同,但是字型很相近,比如,
u004B与u212A都是大写的K。
/[a-z]/i.test('u212A') // false
/[a-z]/iu.test('u212A') // true
上面代码中,不加u修饰符,就无法识别非规范的K字符。
y修饰符
除了u修饰符,ES6还为正则表达式添加了y修饰符,叫做“粘连”(sticky)修饰符。
2.13MB
文件大小:
评论区