1. js中實(shí)例化正則表達(dá)式對(duì)象
var reg1 = /\d/;
//等價(jià)于
var reg2 = new RegExp("\\d\");
// es6 新寫法
var reg3 = new RegExp(/\d/,"g");
相關(guān)修飾符
g: 表示全局搜索
i: 表示忽略大小寫搜索
m: 表示多行搜索
2. 正則表達(dá)式中的特殊字符
非字母字符
. * + 缕允? ^ | \ () {} []
\t \v \n \r \0等
字符類
var reg = /ab/; // 表示匹配ab的正則表達(dá)式
var reg1 = /[abc]/; // 表示one of a,b,c
var reg2 = /[^abc]/; // 表示 none of a,b,c
范圍類
var reg = /[a-d]/; // 表示a到d中間的任意一個(gè)字符
預(yù)定義類
邊界字符
量詞
3. 貪婪模式和非貪婪模式
var reg0 = /\d{1,3}/; //貪婪模式教届,盡可能多的匹配
// 與貪婪模式相比巍佑,正則表達(dá)式量詞后加?
var reg = /\d{1,3}?/; //非貪婪模式堕义,盡可能少的匹配脆栋,一旦成功,就不再嘗試
4. 分組
()可以達(dá)到分組的效果怕膛,分組可以使量詞作用于分組秦踪,而不僅僅作用于和量詞最近的字符
'a1w23e4r'.replace(/([a-z]\d){2}/g,'Q');// Q3e4r
反向引用
采用$加數(shù)字獲取第1個(gè)分組椅邓,第2個(gè)分組。景馁。。等的內(nèi)容
// 將2018-07-08換成 07/08/2018
"2018-07-08".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1');
忽略分組
// 分組內(nèi)最前面加?
"2018-07-08".replace(/(?\d{4})-(\d{2})-(\d{2})/g,'$2/$3');
5. 前瞻
正則表達(dá)式在匹配到規(guī)則時(shí)绰精,向前檢查是否符合斷言
正則表達(dá)式是從左到右解析的笨使,所以右邊稱為前
javascript中不支持后顧僚害,因此暫時(shí)不學(xué)
// 正向前瞻
exp( ?= asert)
"a2*efdfe3r4ef".replace(/\w(?=\d)/g,"Q"); // Q2*efdfQ3Q4ef
// 負(fù)向前瞻
exp( ?! asert )
注:前瞻時(shí)候只匹配不包括斷言部分的正則表達(dá)式
6. RegExp.prototype.test(string)
用于測(cè)試字符串是否符合正則表達(dá)式規(guī)則,符合返回true;不符合返回false涉馁;
注:由于test方法中會(huì)從lastIndex位置開始匹配字符串,所以寒随,對(duì)于全局搜索的返回結(jié)果可能不準(zhǔn)
var reg = /\w/g;
reg.test("a");// true 對(duì)于同一個(gè)正則表達(dá)式對(duì)象而言,一開始lastIndex為0
reg.test("a");// false 此時(shí)lastIndex為1互艾,繼續(xù)向后找讯泣,沒找到返回false
7. ExpReg.prototype.exec(string)
使用正則表達(dá)式搜索字符串,找不到匹配項(xiàng)昨稼,返回null拳锚;找到匹配項(xiàng),返回值為數(shù)組
返回的數(shù)組中匾荆,第一個(gè)為匹配到的內(nèi)容杆烁,后面依次為分組的內(nèi)容,并且存在index屬性為匹配文本的第一個(gè)字符的位置剩岳,input為被檢索的字符串
var reg = /\d/g
對(duì)上面的正則表達(dá)式對(duì)象調(diào)用exec方法入热,會(huì)發(fā)現(xiàn)當(dāng)全局搜索時(shí),lastIndex會(huì)隨著調(diào)用次數(shù)改變绰播,和test方法存在一樣的情況
8. String.prototype.search(reg)
檢索字符串中指定的子字符串或者與正則表達(dá)式相匹配的子字符串蠢箩,方法返回第一個(gè)匹配的結(jié)果的index,查找不到返回-1
search方法不執(zhí)行全局匹配事甜,忽略標(biāo)志g,總是從字符串的開始進(jìn)行檢索
9. String.prototype.split(reg)
10. String.prototype.replace(參數(shù))
第一種形式參數(shù)string, string
第二種形式參數(shù)reg, string
第三種形式參數(shù)reg, function
對(duì)于第三種形式的參數(shù)中function的參數(shù)
function ('匹配的字符串', '分組內(nèi)容1', '分組內(nèi)容2'掌实,..., '匹配項(xiàng)在字符串中的index', '原字符串')
方法的返回值為要替換的結(jié)果
"aabbccdd12343".replace(/(\w){2}\d/,function(str, group1,index,src){
console.log(str);
console.log(group1);
console.log(index);
console.log(src);
return "Q";
})
11. 關(guān)于驗(yàn)證正則表達(dá)式
根據(jù)regexper-static網(wǎng)站內(nèi)容可以將驗(yàn)證正則表達(dá)式的項(xiàng)目安裝到本地贱鼻,進(jìn)行驗(yàn)證
本文目的僅僅是為了個(gè)人查找閱讀等提供方便