前言
接著例子詳解正則表達(dá)式(二)>往下講滤灯。
1.特殊字符:x(?=y)
上面說(shuō)明已經(jīng)很明白旁理,()
里面就是一個(gè)控制流語(yǔ)句躏精,x(?=y)
相當(dāng)于:if(y){ x }
var str = "issax is not issac";
var pattern = /(?:issa)(?=x)/g;
console.log(str.replace(pattern, 'a'));
// 輸出ax is not issac
上面的 pattern 中第一個(gè)()
中的正則語(yǔ)法在 例子詳解正則表達(dá)式(一) 有詳細(xì)說(shuō)過(guò)卫枝,它是一個(gè)“非捕獲符號(hào)”绵脯,結(jié)合結(jié)果你可以猜到,它的就用將“issa”捆綁成一塊跨新,作為一個(gè)整體去匹配富腊。
第二個(gè)()
是本小節(jié)主角坏逢,按本小節(jié)的pattern解讀就是:只有掃描到“issa”時(shí)域帐,只有它后面緊接的是“x”才匹配赘被。也是因此“issac”沒(méi)有被匹配。
2.特殊字符:x(?!y)
會(huì)了第1小節(jié)中的正則語(yǔ)法肖揣,這一小節(jié)就好明白啦民假,就是來(lái)個(gè)否定而已,就直接上個(gè)例子了龙优。
var str = "issax is not issac";
var pattern = /(?:issa)(?!x)/g;
console.log(str.replace(pattern, 'a'));
// 輸出
3.特殊字符:x|y
這個(gè)符號(hào)的作用也是上面說(shuō)的起到一個(gè)或的作用羊异,相當(dāng)于控制流中的||
,類比if(x || y){ }
彤断,
var str = "issaxite is issacsite";
var pattern = /x|cs/g
console.log(str.replace(pattern, "c's"));
ps: ·|·是可以多次使用的野舶。另外,由上面的例子結(jié)果可以看出宰衙,這個(gè)符號(hào)的作用是:以多個(gè)正則表達(dá)式去匹配平道。
4.特殊字符:{n}
n是一個(gè)正整數(shù),正整數(shù)是1供炼,2一屋,3,...袋哼,n(不包括負(fù)數(shù))
可以n指定前面的字符出現(xiàn)的次冀墨,還是比較簡(jiǎn)單,比較好理解的
var str = "nnnn and nnnnnn nnnnnnn is just n";
var pattern = /n{6}/g;
console.log(str.replace(pattern, 'n'));
很簡(jiǎn)單的解讀:/n{6}/g
就相當(dāng)于/nnnnnn/g
5.特殊字符:{n, m}
這個(gè)字符和第5小節(jié)中的字符的功能用點(diǎn)類似涛贯,但是本節(jié)的字符的作用不是指定某字符或單位字串出現(xiàn)的次數(shù)诽嘉,而是指定某字符或某單位字串出現(xiàn)次數(shù)的范圍,例如/n{2,3}/g
疫蔓,即是匹配nn或nnn但是不匹配n或nnn...n
var str = "n nn nnn nnnn nnnnn nnnnnn nnnnnnn"; // 分別是1含懊,2,3衅胀,4岔乔,5,6滚躯,7個(gè)n
var pattern = /n{2,3}/g
console.log(str.replace(pattern, "N"));
n的出現(xiàn)次數(shù)在范圍內(nèi)還好理解雏门,但是超出了又怎么對(duì)待的?估計(jì)會(huì)有這個(gè)疑問(wèn)掸掏,例子的輸出結(jié)果好像已經(jīng)解答了這個(gè)問(wèn)題茁影。
- 各位觀眾老爺,今天就到這里丧凤,且聽下回分解募闲。
ps: 網(wǎng)絡(luò)不好,demo是回公司再補(bǔ)了