node.js學(xué)習(xí)筆記之正則表達(dá)式-創(chuàng)新互聯(lián)

每種編程語(yǔ)言里都有正則表達(dá)式,而且內(nèi)容基本上都是一樣的,今天就來(lái)說(shuō)說(shuō)我對(duì)正則表達(dá)式的理解。

成都創(chuàng)新互聯(lián)主營(yíng)邯鄲網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),邯鄲h5微信小程序定制開發(fā)搭建,邯鄲網(wǎng)站營(yíng)銷推廣歡迎邯鄲等地區(qū)企業(yè)咨詢

我覺得正則表達(dá)式實(shí)際上就是一種規(guī)則,一種針對(duì)字符串的規(guī)則,我們可以通過(guò)正則表達(dá)式來(lái)獲取我們想要的同類型字符串或者檢驗(yàn)?zāi)骋蛔址欠穹衔覀兊囊蟆?/p>

正則表達(dá)式可以參與計(jì)算的符號(hào)有:

(),小括號(hào),或叫圓括號(hào),是一個(gè)分組,也是個(gè)集合。他的作用是一個(gè)匹配一串字符。比如:

/(abc)/;  該句的作用是匹配源字符串中是否有"abc"這樣的一串字符;

[],中括號(hào),或叫方括號(hào),是一個(gè)集合,他的作用是匹配集合中的其中一個(gè)字符。比如:

/[abc]/;  該句的作用是匹配源字符串中是否有"a"或者"b"或者"c"中的其中一個(gè)。

{},大括號(hào),或叫花括號(hào),是一個(gè)數(shù)量范圍,他的作用是匹配某串字符是否有N個(gè),不能直接使用,需要和其他能代表字符的表達(dá)式配合使用。他有三種用法:

{1} 匹配一次,{1,} 匹配最少一次,最多不限,{1,5} 匹配最少一次,最多5次。比如:

/[abc]{2}/ 這句的意思是abc其中的一個(gè)是否連續(xù)出現(xiàn)2次,就是匹配源字符串中是否有aa 或bb 或cc;

/[abc]{2,}/ 這句的意思是abc其中的一個(gè)是否最少連續(xù)出現(xiàn)2次。

/[abc]{2,5}/ 這句的意思是abc其中的一個(gè)是否最少連續(xù)出現(xiàn)2次,最多出現(xiàn)5次。

其實(shí)這里有個(gè)坑:

let a = /[abc]{2,5}/;
let b = ‘a(chǎn)aaaaa’;
console.log(a.test(b));//結(jié)果為true

為什么6個(gè)a也能匹配成功?我的理解是:匹配是檢索源字符串中的其中一串是否符合正則,意思就是6個(gè)a中肯定有連續(xù)的2-5個(gè)a,所以能匹配成功。這個(gè)坑先記下,講到后面的符號(hào)時(shí)再來(lái)破他。

\,反斜杠,是轉(zhuǎn)義符,意思是反斜杠后面將要用到的字符不是表面上看起來(lái)那樣的意思,這句話有點(diǎn)繞,看例子就能明白了:

/\(/  小括號(hào)在正則中的意思是分組,但用反斜杠標(biāo)注之后,那他的意思就不是表面上分組的意思了,那是什么意思?意思是他就是個(gè)左小括號(hào)。再來(lái)個(gè)例子就能更明白點(diǎn):

/\d/; d在正則中表面上是一個(gè)字符,但用反斜杠標(biāo)注之后,他就不是個(gè)字符了,就代表所有的數(shù)字。

^ ,這個(gè)符號(hào)暫時(shí)沒有中文名字,英文名字叫caret,他有兩個(gè)作用,在表達(dá)式的開頭寫上他,代表字符串的開頭,寫到集合中,就代表非,就是不能有集合中的字符。還是例子能說(shuō)明事兒:

/^a/; 這句的意思是要匹配的字符串的第一個(gè)字符必須是a;

let a=/^a/;
let b = "abc";
let c = "bacd";
console.log(a.test(b));//true; b字符串開頭第一個(gè)字符是a,所以能匹配成功。
console.log(a.test(c));//false; c字符串開頭第一個(gè)字符不是a,所以匹配失敗。

$, 美元符號(hào),作用是匹配字符串的結(jié)尾,和 ^ 的效果一樣,位置相反,直接看例子:

let a=/a$/;
let b = "bca";
let c = "cad";
console.log(a.test(b));//true; b字符串最后一個(gè)字符是a,所以能匹配成功。
console.log(a.test(c));//false; c字符串最后一個(gè)字符不是a,所以匹配失敗。

| 豎線, 或 的意思,和代碼里常用的 || 用法一模一樣,就不再多說(shuō)了。

? ,問(wèn)號(hào),量詞,和{}用法一樣,意思是匹配0次到1次。效果等同{0,1};

* ,星號(hào),量詞,和{}用法一樣,意思是匹配0次到N次。效果等同{0,};

+ , 加號(hào),量詞,和{}用法一樣,意思是匹配1次到N次。效果等同{1,};

. , 點(diǎn)號(hào),不是量詞,意思是可以匹配任意一個(gè)字符。

另外還有一些轉(zhuǎn)義用法:

\d 代表任意一個(gè)數(shù)字 效果等同[0-9];

\D 代表任意一個(gè)不是數(shù)字的字符,效果等同[^0-9];

\w 代表任意一個(gè)字母、數(shù)字、_ (下劃線)、漢字。 功能很強(qiáng)大。

\W 代表任意一個(gè)不是字母、數(shù)字、_ (下劃線)、漢字的字符。

等等,不過(guò)那些一般情況下用不到,這里就不詳細(xì)說(shuō)了。

下面要說(shuō)一下正則表達(dá)式的模式:

g,全局模式,意思是要把源字符串從頭到尾匹配一遍,不論中間是否匹配成功,如果不加 g模式,那么匹配成功一次之后就不再向后匹配了。

i,不區(qū)分大小寫模式,這個(gè)很明了,不用細(xì)說(shuō)。

m,多行模式

下面找?guī)讉€(gè)例子來(lái)拆解一下應(yīng)該能更容易明白:

網(wǎng)上找的一個(gè)郵箱的正則表達(dá)式: /^[\w]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/g;

來(lái)我們解讀一遍,

^   [\w]  +   ( \.  [\w-]   +   )*   @ [\w-]    +

開頭[任一字XX]最少一次 (點(diǎn)號(hào) [任一字XX或-]最少一次)不限次  @[任一字XX或-]最少一次

(\.  [\w-]    +   ) +    $

(點(diǎn)號(hào) [任一字XX或-]最少一次)最少一次  結(jié)尾

這樣能看懂么?看不懂?那就按他的規(guī)則寫一個(gè)字符串看看是不是郵箱的格式吧

^   [\w]  +   ( \.  [\w-]   +   )*   @ [\w-]    +

開頭[任一字XX]最少一次 (點(diǎn)號(hào) [任一字XX或-]最少一次)不限次  @[任一字XX或-]最少一次

這是拼接的: a3_     .b23g           @ abc

(\.  [\w-]    +   ) +    $

(點(diǎn)號(hào) [任一字XX或-]最少一次)最少一次  結(jié)尾

 .   ab4     .ab4.ab4

好了,連起來(lái)看就是:a3_.b23g@abc.ab4.ab4.ab4  哇,真是郵箱的格式,不過(guò)里面用了很多\w,我還還真沒見過(guò)用漢字的郵箱 和漢字的域名后綴,所以我們可以來(lái)改造一下,讓這個(gè)更符合我們現(xiàn)在的常見情況:

 /^[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$/g;

恩,因?yàn)閈w是可以代表數(shù)字、字母、_和漢字,我們不要漢字 ,那就寫成了 [a-zA-Z0-9_]

好的,再拼一下,那就是aB23ab@ab43.ab245.ab245 ; 跟我們常見的郵箱一樣了吧。個(gè)人感覺這一整篇文章也就最后這段的拆解法寫正則能對(duì)某些同學(xué)會(huì)有幫助了。最重要還是要多練習(xí)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享文章:node.js學(xué)習(xí)筆記之正則表達(dá)式-創(chuàng)新互聯(lián)
URL鏈接:http://bm7419.com/article30/hdgpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)云服務(wù)器、網(wǎng)站策劃網(wǎng)站內(nèi)鏈、用戶體驗(yàn)、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化