十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
因?yàn)?*表示點(diǎn)0到無(wú)數(shù)次重復(fù),等同于.{0,},也就是說(shuō)可以不重復(fù)(0次重復(fù)),所以你第二個(gè)正則表達(dá)式,可以等同于第一個(gè)正則表達(dá)式,因?yàn)?*可以為0次重復(fù).

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站、程序開(kāi)發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序定制開(kāi)發(fā)等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷(xiāo)、管理等多方位專業(yè)化運(yùn)作于一體。
如果你把.*改成.+輸出就是false了,因?yàn)?+表示點(diǎn)1到無(wú)數(shù)次重復(fù),等同于.{1,}
下面給你一個(gè).+的例子,你看看吧,結(jié)果為false
script?type=text/javascript
var?pattem?=?/8go..+gle8/;?
var?str?=?'8google8';?
alert(pattem.test(str));
/script
運(yùn)行結(jié)果
false
"." 表示:匹配除換行符以外的任意字符
如:888 8-8 8a8 等 中間可以寫(xiě)任意字符
JavaScript通過(guò)RegExp類(lèi)來(lái)支持正則表達(dá)式,舉一個(gè)最簡(jiǎn)單的例子:
復(fù)制代碼
代碼如下:
var
regApple
=
new
RegExp("apple");
它可以匹配一個(gè)字符串中出現(xiàn)的第一個(gè)"apple"字符串,并且對(duì)大小寫(xiě)敏感。在構(gòu)造方法中加入第二個(gè)參數(shù)"g"則代表的搜索出字符串中所有的
"apple",這里"g"代表"global"。如果第二個(gè)參數(shù)為"i",則代表著case-insensitive,匹配過(guò)程中將不考慮字母的大小寫(xiě)。將上述兩者綜合起來(lái),可以搜索出所有"apple"字符串,并且不考慮大小寫(xiě)問(wèn)題。
復(fù)制代碼
代碼如下:
var
regApple
=
new
RegExp("apple",
"gi");
正則表達(dá)式有著并不唯一的表示方法,使用Perl語(yǔ)言中的語(yǔ)法,可以將上述表達(dá)式表示為:
復(fù)制代碼
代碼如下:
var
regApple
=
/apple/gi;
創(chuàng)建了一個(gè)RegExp對(duì)象后,RegExp的方法可以構(gòu)造出不同的匹配方式,因?yàn)檎齽t表達(dá)式是對(duì)字符串進(jìn)行的操作,所以String的一些方法在構(gòu)造正則表達(dá)式的過(guò)程中也扮演著重要角色。
RegExp對(duì)象的方法
復(fù)制代碼
代碼如下:
var
sampleString
=
"Greenapple";
var
regApple
=
/apple/;
alert(regApple.test(sampleString));
上面代碼輸出的結(jié)果是"true",因?yàn)閟ampleString中包含了需要匹配的字符串"apple",這是最簡(jiǎn)單的檢測(cè)方式。有時(shí),我們需要知道匹配的詳細(xì)結(jié)果,例如:
復(fù)制代碼
代碼如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/g;
var
arr
=
regApple.exec(sampleString);
通過(guò)使用exec()方法,返回的arr是關(guān)于匹配結(jié)果的一個(gè)數(shù)組,包括每一個(gè)匹配的值及其所在的段,例如上例中是"green
apples"還是"red
apples"。match()方法有著和exec()相同的功能,只是表達(dá)方式不同:
復(fù)制代碼
代碼如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/g;
var
arr
=
sampleString.match(regApple);
search()方法和indexOf()比較類(lèi)似,返回第一個(gè)匹配的字符串所在的位置:
復(fù)制代碼
代碼如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/gi;
alert(sampleString.search(regApple));
//輸出"6"
String的方法
String的replace()方法可以將指定的字符串替換為另一個(gè)字符串:
復(fù)制代碼
代碼如下:
var
sampleString
=
"There
is
a
green
apple.";
alert(sampleString.replace("green",
"red"));
//輸出"There
is
a
red
apple."
將replace()的第一個(gè)參數(shù)替換為一個(gè)正則表達(dá)式,可以達(dá)到同樣的效果:
復(fù)制代碼
代碼如下:
var
sampleString
=
"There
is
a
green
apple.";
var
regApple
=
/apple/;
alert(sampleString.replace(regApple,
"red"));
//輸出"There
is
a
red
apple."
replace()的第二個(gè)參數(shù)可以替換為一個(gè)function(),該function()接受一個(gè)匹配字符串作為參數(shù),返回一個(gè)替換字符串。(存在疑問(wèn))
使用正則表達(dá)式可以實(shí)現(xiàn)String的split()方法相同的功能。
復(fù)制代碼
代碼如下:
var
fruit
=
"apple,pear,lemon";
var
arr
=
fruit.split(",");
使用正則表達(dá)式:
復(fù)制代碼
代碼如下:
var
fruit
=
"apple,pear,lemon";
var
reg
=
/\,/;
var
arr
=
fruit.split(reg);
一、
當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時(shí),通常的行為是(在使整個(gè)表達(dá)式能得到匹配的前提下)匹配盡可能多的字符。以這個(gè)表達(dá)式為例:a.*b,它將會(huì)匹配最長(zhǎng)的以a開(kāi)始,以b結(jié)束的字符串。如果用它來(lái)搜索aabab的話,它會(huì)匹配整個(gè)字符串a(chǎn)abab。這被稱為貪婪匹配。
二、
有時(shí),我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個(gè)問(wèn)號(hào)?。這樣.*?就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)?,F(xiàn)在看看懶惰版的例子吧:
a.*?b匹配最短的,以a開(kāi)始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會(huì)匹配aab(第一到第三個(gè)字符)和ab(第四到第五個(gè)字符)。
三、代碼/語(yǔ)法 說(shuō)明
① *? 重復(fù)任意次,但盡可能少重復(fù)
② +? 重復(fù)1次或更多次,但盡可能少重復(fù)
③ ?? 重復(fù)0次或1次,但盡可能少重復(fù)
④ {n,m}? 重復(fù)n到m次,但盡可能少重復(fù)
⑤ {n,}? 重復(fù)n次以上,但盡可能少重復(fù)