ES6學習 第五章 正則的擴充套件

2021-09-08 13:05:40 字數 2955 閱讀 4975

/**

* created by z18630 on 2018/12/10 0010.

*///第五章 正則的擴充套件

//regexp建構函式

//使用第二個引數新增修飾符,且覆蓋原有的

console.log(new regexp(/abc/ig, 'i').flags); //i

console.log('------------------------');

//字串的正則方法

//match():使用指定的正規表示式進行查詢,以陣列的形式返回符合要求的字串

// 定義在字串上,引數為正規表示式

let s1 = 'aaabbaaaccc1234aaaccc';

console.log(s1.match(/aa/)); //[ 'aa',index: 0,: 'aaabbaaaccc1234aaaccc',groups: undefined ]

console.log(s1.match(/[a-z]/g)); //全域性匹配,返回所有匹配字串

// [ 'aaa', 'bba', 'aac', 'aaa', 'ccc' ]

//exec():使用指定的正規表示式進行查詢,以陣列的形式返回符合要求的字串

// 返回第乙個匹配的字串,還可返回子字表示式匹配的字串

// 定義在正規表示式上,引數為字串

console.log(/ccc([0-9]+)aaa/g.exec(s1));

// [ 'ccc1234aaa',

// '1234',

// index: 8,

// input: 'aaabbaaaccc1234aaaccc',

// groups: undefined ]

//test():匹配到返回true,未匹配到返回false

console.log(/ccc([0-9]+)aaa/g.test(s1)); //true

//search():返回第乙個匹配的字串的所在位置

// console.log(s1.match(/[b-z]/g)); //[ 'ccc', 'ccc' ]

//replace():替換掉匹配的字串

console.log(s1.replace(/[b-z]/g, 'zzz')); //aaabbaaazzz1234aaazzz

//split():返回匹配到的字串作為分隔符的陣列

let s2 = 'aa!dd@jj&k,s';

console.log(s2.split(/[!@&,]/, 3)); //第二個引數為返回陣列元素的個數 //[ 'aa', 'dd', 'jj' ]

console.log('---------------------');

//u修飾符

console.log(/^\ud83d/u.test('\ud83d\udc2a')); //加了u修飾符,能識別大於\uffff的字元,

//即能識別4個位元組的utf-16編碼,識別為乙個字元

//false

console.log(/^\ud83d/.test('\ud83d\udc2a')); //true

console.log(/^.$/u.test('\ud83d\udc2a')); //識別為乙個字元 //true

console.log(/^.$/.test('\ud83d\udc2a')); //false

console.log(/\u/u.test('a')); //大括號的unicode表示加u才能識別 //true

console.log('---------------------');

//y修飾符:粘連修飾符

//和g修飾符的區別,g修飾符只要剩餘位置存在匹配就行,y修飾符會確保匹配必須從剩餘位置的第乙個字元開始

let s = 'aaa_aa_a';

console.log(s.match(/a+/g)); //[ 'aaa', 'aa', 'a' ]

console.log(s.match(/a+/yg)); //匹配到第乙個aaa後,後面的字元第乙個位置為_,無法繼續匹配 //['aaa']

console.log(s.match(/a+_/g));// [ 'aaa_', 'aa_' ]

console.log(s.match(/a+_/yg)); //[ 'aaa_', 'aa_' ]

//sticky屬性:是否設定了y修飾符

console.log(/a+_/yg.sticky); //true

//source屬性:返回表示式的正文

console.log(/a+_/yg.source); //a+_

//flags屬性:返回表示式的修飾符

console.log(/a+_/yg.flags); //gy

console.log('---------------------');

//斷言rorath

//先行斷言:x只在y前面才匹配,寫成/x(?=y)/

//先行否定斷言:x只有不在y前面才匹配,寫成/x(?!y)/

console.log(/\d+(?=%)/.exec('1 20%a')); //括號中的部分不計入返回結果

//[ '20', index: 2, input: '1 20%a', groups: undefined ]

console.log(/\d+(?!%)/.exec('1 20%a'));

//[ '1', index: 0, input: '1 20%a', groups: undefined ]

//後行斷言:x只有在y後面才匹配,/(?<=y)x/

//後行否定斷言:x只有不在y後面才匹配,寫成/(?\d)-(?\d)-(?\d)/;

// const } = re.exec('1991-12-31');

// console.log(years);

ES6學習 正則的擴充套件

字串物件共有 4 個方法,可以使用正規表示式 match replace search 和split es6 將這 4 個方法,在語言內部全部呼叫regexp的例項方法,從而做到所有與正則相關的方法,全都定義在regexp物件上 string.prototype.match 呼叫 regexp.pr...

ES6 正則的擴充套件

一,regexp 建構函式 es5中,regexp建構函式的引數有兩種情況。1,引數是字串,第二個引數表示正規表示式的修飾符 flag 2,引數是乙個正規表示式,返回乙個原有正規表示式的拷貝。es6中,如果regexp建構函式第乙個引數是乙個正則物件,那麼可以使用第二個引數指定修飾符。而且,返回的正...

ES6精華 正則擴充套件

本篇概括了es6中正規表示式新增部分的精華要點 最好有es5的基礎 使正則處於unicode模式。關於es6的字元擴充套件知識,可檢視這裡。處於unicode模式下的正則,可以正確識別32位 四位元組 字元。let c ud83d udc2a 32位字元 console.log s test c f...