1. 程式人生 > >ES6的正則擴展

ES6的正則擴展

arc abc 括號 false 表達 tor 方法 \n har

{ // #構造函數# let regex = new RegExp(‘xyz‘, ‘i‘); //第一個參數是字符串,第二個是修飾符 let regex2 = new RegExp(/xyz/i); //第一個參數是正則表達式,不接受第二個參數,否則會報錯 console.log(regex.test(‘xyz123‘), regex2.test(‘xyz123‘));//true true console.log(regex.test(‘xyZ123‘), regex2.test(‘xyZ123‘));
let regex3 = new RegExp(/abc/ig, ‘i‘); console.log(regex3.flags);//i //原有正則對象的修飾符是ig,它會被第二個參數i覆蓋
}
// 字符串對象的4個使用正則表達式的方法: match(),replace(),search(),split()這四個方法全部調用RegExp的實例的方法。
{ let regex = new RegExp(‘xyz‘, ‘ig‘); console.log(regex.test(‘xyz0XYZ1xyz2‘), regex.exec(‘xyz0XYZ1xyz2‘)); }
{ // y修飾符 let s = ‘bbbb_bbb_bb_b‘; var a1 = /b+/g; var a2 = /b+/y;
console.log(a1.exec(s), a2.exec(s)); // ["bbbb"],["bbbb"] console.log(a1.exec(s), a2.exec(s)); // ["bbb"],null
console.log(a1.sticky, a2.sticky); //表示是否開啟了粘連模式 }
{ console.log(‘u修飾符‘,/^\uD83D/.test(‘\uD83D\uDC2A‘)); // true console.log(‘u修飾符‘,/^\uD83D/u.test(‘\uD83D\uDC2A‘)); // false // 大括號表示Unicode字符,只有加上u才能識別 console.log(/\u{61}/.test(‘a‘)); // false console.log(/\u{61}/u.test(‘a‘)); // true console.log(/\u{20BB7}/u.test(‘??‘)); // true // 點(.)字符不能識別碼點大於0xFFFF的Unicode字符,必須加上u修飾符。 let s = ‘??‘; console.log(‘大於0xFFFF的Unicode字符‘,/^.$/.test(s)); // false console.log(‘使用u字符‘,/^.$/u.test(s)); // true
// 使用u修飾符後,所有量詞都會正確識別大於碼點大於0xFFFF的Unicode字符。 console.log(‘量詞‘,/a{2}/.test(‘aa‘)); // true console.log(‘量詞‘,/a{2}/u.test(‘aa‘)); // true console.log(‘量詞‘,/??{2}/.test(‘????‘)); // false console.log(‘量詞‘,/??{2}/u.test(‘????‘)); // true }
{ // #正則表達式中,點(.)是一個特殊字符,代表任意的單個字符,但是行終止符(line terminator character)除外 // U+000A 換行符(\n) // U+000D 回車符(\r) // U+2028 行分隔符(line separator) // U+2029 段分隔符(paragraph separator) // 只是一個提案目前還不支持 // let reg=/test.go/s; // console.log(reg.test(‘test\ngo‘)); // console.log(reg.test(‘test\ngo‘)); console.log(‘s變通方法‘,/foo.bar/.test(‘foo\nbar‘)); console.log(‘s變通方法‘,/foo[^]bar/.test(‘foo\nbar‘)); }

ES6的正則擴展