通過案例學(xué)習(xí)正則表達(dá)式

我們知道js是支持正則表達(dá)式的己英,用正則表達(dá)式來驗(yàn)證文本非常方便迎瞧,但是初學(xué)者卻非常難懂夸溶,最近碰到幾個(gè)要用正則的地方,實(shí)在是逃不過了就去學(xué)了學(xué)凶硅,發(fā)現(xiàn)邊寫邊學(xué)其實(shí)也并不是太難缝裁。下面通過一個(gè)案例來學(xué)習(xí)

ps:安利兩個(gè)網(wǎng)站正則可視化 正則檢測(cè) 下面講用法

先看需求:匹配美國(guó)電話號(hào)碼

//正確格式
555-555-5555
(555)555-5555
(555) 555-5555
555 555 5555
5555555555
1 555 555 5555

首先會(huì)想到匹配數(shù)字,發(fā)現(xiàn)正則數(shù)字可以用\d表示足绅,那么\d\d\d-\d\d\d-\d\d\d\d是不是可以匹配第一種類型呢捷绑,來用這個(gè)網(wǎng)站檢測(cè)一下,可以看到第一個(gè)確實(shí)被匹配到了氢妈,后面/g是全文匹配

但是缺點(diǎn)顯而易見粹污,重復(fù)的怎么簡(jiǎn)寫呢?原來{n}可以表示重復(fù)次數(shù)首量,那么改一下


Bingo!,那么接下來注意到第一個(gè)壮吩,第四個(gè)是不是比較相同呢?空格或者橫線加缘,那么怎么表示或者關(guān)系呢鸭叙?來看看這個(gè),框起來的是更改的地方

沒錯(cuò)[]表示或者的關(guān)系\s表示空格拣宏。來用可視化看一下


意思就是3個(gè)數(shù)字沈贝,接著匹配空格或則橫線,再3個(gè)數(shù)字勋乾,再空格或則橫線宋下,最后4個(gè)數(shù)字,這樣應(yīng)該很好理解了

可能會(huì)注意到222 555 555 5555這樣不符合預(yù)期的也匹配到了辑莫,原來我們是想從頭開始驗(yàn)證杨凑,那么可以這樣做

^表示從頭開始匹配,注意到后面加了/gm,因?yàn)榧恿藦念^匹配的話摆昧,回車換行下一行并不會(huì)被認(rèn)為新的開始,所以/m表示多行匹配
然后看5555555555空格和橫線也可以不要蜒程,那么意思就是空格或橫線可以出現(xiàn)或者不出現(xiàn)绅你,那么可以這樣改一下


注意我加了一個(gè)?伺帘,它表示最多出現(xiàn)一次(可以是0次)這樣就可以匹配全是數(shù)字這樣的情況了,舉一反三忌锯,那么開始的區(qū)號(hào)1 555 555 5555中的1和空格是不是也可以這樣表示呢伪嫁?

注意我()括起來了,它表示一組
接下來處理括號(hào)偶垮,既然也是可有可無(wú)张咳,也用?表示算了


注意框起來的地方我寫的是\(\)這是因?yàn)?strong>要對(duì)特殊字符進(jìn)行轉(zhuǎn)義,學(xué)過js一定對(duì)轉(zhuǎn)義不陌生似舵,這里就不細(xì)講了
到這里就完了嗎脚猾?不不不,還是太年輕砚哗,來看看這種情況


我們寫的是括號(hào)兩邊都是最多出現(xiàn)一次龙助,并沒有要求同時(shí)出現(xiàn)或者同時(shí)不出現(xiàn),這就面臨著只出現(xiàn)一半也會(huì)通過匹配的情況蛛芥。提鸟。再改一下


這好像改的有點(diǎn)多。仅淑。

分步講称勋,先看前面由(1\s)?改成了1?\s?因?yàn)闆]改之前(1\s)是一組至多出現(xiàn)一次,所以1單獨(dú)出現(xiàn)的時(shí)候也會(huì)出現(xiàn)匹配失敗涯竟,所以還是分開寫了

再看第二個(gè)這一坨赡鲜,放到可視化里面看

兩組之間的或者關(guān)系可以用()|()表示

最后一步,我加了$來表示結(jié)尾昆禽,停止匹配蝗蛙,不然的話555-555-5555555也是會(huì)被匹配成功的

大致就是這么多了,最后來完整看一遍代碼

/^1?\s?((\(\d{3}\))|(\d{3}))[\s-]?\d{3}[\s-]?\d{4}$/gm

放到可視化里面


常用的正則方法還有

[a-z]    //匹配a到z任意字符
.    //除回車換行外任意字符
+//最少出現(xiàn)一次
\d//數(shù)字
\D//非數(shù)字
\s//空格
\S//非空格
\w//單詞字符
\W//非單詞字符
{n}//出現(xiàn)n次
{n,m}//出現(xiàn)n到m次
{n,}//至少出現(xiàn)n次
\b//單詞邊界
\B//非單詞邊界
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末醉鳖,一起剝皮案震驚了整個(gè)濱河市捡硅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盗棵,老刑警劉巖壮韭,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纹因,居然都是意外死亡喷屋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門瞭恰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屯曹,“玉大人,你說我怎么就攤上這事《竦ⅲ” “怎么了密任?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)偷俭。 經(jīng)常有香客問我浪讳,道長(zhǎng),這世上最難降的妖魔是什么涌萤? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任淹遵,我火速辦了婚禮,結(jié)果婚禮上负溪,老公的妹妹穿的比我還像新娘透揣。我一直安慰自己,他們只是感情好笙以,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布淌实。 她就那樣靜靜地躺著,像睡著了一般猖腕。 火紅的嫁衣襯著肌膚如雪拆祈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天倘感,我揣著相機(jī)與錄音放坏,去河邊找鬼。 笑死老玛,一個(gè)胖子當(dāng)著我的面吹牛淤年,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜡豹,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼麸粮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了镜廉?” 一聲冷哼從身側(cè)響起弄诲,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娇唯,沒想到半個(gè)月后齐遵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塔插,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年梗摇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片想许。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伶授,死狀恐怖断序,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谎砾,我是刑警寧澤逢倍,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站景图,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碉哑。R本人自食惡果不足惜挚币,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扣典。 院中可真熱鬧妆毕,春花似錦、人聲如沸贮尖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)湿硝。三九已至薪前,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間关斜,已是汗流浹背示括。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痢畜,地道東北人垛膝。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像丁稀,于是被迫代替她去往敵國(guó)和親吼拥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容