鍍金池/ 問答/Java  HTML/ /^(18[0-9]{9})|(15[0-9]{9})$/ 正則匹配的問題

/^(18[0-9]{9})|(15[0-9]{9})$/ 正則匹配的問題

/^(18[0-9]{9})|(15[0-9]{9})$/ 這條正則為什么能匹配 18444444444444444444,我對(duì)這條正則的理解是 以 18 或 15 開頭后接9位 0-9 的數(shù)字。

注:我知道手機(jī)號(hào)碼的正則有其他的寫法,只是想弄懂為什么這條可以匹配的原因。

回答
編輯回答
蔚藍(lán)色

/^(18[0-9]{9})|(15[0-9]{9})$/

首先你要明白你寫的這條正則代表什么意思:
^(18[0-9]{9})或者(15[0-9]{9})$就匹配

翻譯過來就是:
(18和9個(gè)十進(jìn)制數(shù)開頭)或者(15和9個(gè)十進(jìn)制結(jié)尾)就匹配

然后你給的數(shù)據(jù)是這樣的:
18444444444444444444

既然是或語句,這符合18和9個(gè)十進(jìn)制數(shù)開頭所以自然就匹配啦

可以改成這樣/^(18[0-9]{9})$|^(15[0-9]{9})$/就符合你要的手機(jī)匹配

2017年1月26日 17:19
編輯回答
傲嬌范

因?yàn)榍懊?1位已經(jīng)匹配成功
你這條表達(dá)試不能匹配15開頭的

2017年3月5日 00:48
編輯回答
情已空
/^(18[0-9]{9})$|^(15[0-9]{9})$/ 
2018年3月12日 03:14
編輯回答
兔囡囡
/^(18[0-9]{9})|(15[0-9]{9})$/

這個(gè)表達(dá)式相當(dāng)于:

/(^18[0-9]{9})|(15[0-9]{9}$)/

是因?yàn)?^ 和 $ 的優(yōu)先級(jí)比 | 高,所以 ^ 先與 18[0-9]{9} 匹配了

2018年2月17日 14:54
編輯回答
糖果果
^(18[0-9]{9})|(15[0-9]{9})$

你這種寫法,相當(dāng)于

^(18[0-9]{9})


  (15[0-9]{9})$

也就是優(yōu)先級(jí)問題,你需要加上個(gè)括號(hào),如下:

^((18[0-9]{9})|(15[0-9]{9}))$

其實(shí)這個(gè)js庫就有校驗(yàn)手機(jī)號(hào)碼的API了,提供參考bee.js

2017年8月27日 02:45