正则新增特性
构造函数的变化 正则方法的扩展 u 修饰符 y 修饰符 s 修饰符
javascript
{
// es5
let regex = new RegExp('xyz', 'i')
let regex2 = new RegExp(/xyz/i)
console.log(regex.test('xyz123'), regex2.test('xyz123')) // true true
// es6
let regex3 = new RegExp(/xyz/gi, 'i')
console.log(regex3.flags) // i
// ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。
}
{
let s = 'bbb_bb_b'
let a1 = /b+/g
let a2 = /b+/y
console.log('one', a1.exec(s), a2.exec(s))
// one ["bbb", index: 0, input: "bbb_bb_b", groups: undefined] ["bbb", index: 0, input: "bbb_bb_b", groups: undefined]
console.log('two', a1.exec(s), a2.exec(s))
// two ["bb", index: 4, input: "bbb_bb_b", groups: undefined] null
console.log(a1.sticky, a2.sticky) // false true
}
{
console.log('u-1', /^\uD83D/.test('\uD83D\uDC2A')) // u-1 true
console.log('u-2', /^\uD83D/u.test('\uD83D\uDC2A')) // u-2 false
console.log(/\u{61}/.test('a')) // false
console.log(/\u{61}/u.test('a')) // true
console.log(`\u{20BB7}`) // 𠮷
let s = '𠮷'
console.log('u-1', /^.$/.test(s)) // u-1 false
console.log('u-2', /^.$/u.test(s)) // u-2 true
console.log('test-1', /𠮷{2}/.test('𠮷𠮷')) // test-1 false
console.log('test-2', /𠮷{2}/u.test('𠮷𠮷')) // test-2 true
}