目錄
問題現(xiàn)象:
?問題分析:
解決方法:
拓展:
1、手機號或座機:
2、郵箱:
3、中文:
4、數(shù)字:
5、英文:
6、組合:
問題現(xiàn)象:
? ? ? ? 今天在項目中,發(fā)現(xiàn)有個正則表達式匹配不上導(dǎo)致了數(shù)據(jù)校驗不通過的問題,如下:
? ? ? ? 于是就產(chǎn)生了疑問:這個正則表達式有什么問題?校驗手機號/座機號碼的正則表達式到底該怎么寫呢?
?問題分析:
????????上面這個正則表達式是我用來校驗用戶傳入的手機號和座機號。
????????根據(jù)這個問題就開始回想自己當初是怎么寫出這個正則表達式的?關(guān)于正則表達式,不知道各位小伙伴是怎么學(xué)習(xí)的,反正我自己學(xué)的時候只會理解,從來不去記,因為這個東西我感覺用得很少,而且沒有記的必要,只要在需要使用的時候,查一下資料復(fù)習(xí)一下就可以了,而更多的時候我可能只是上網(wǎng)搜一下校驗?zāi)硞€字段(如手機號)的正則表達式該怎么寫,所以當時就是上網(wǎng)搜到了這個正則表達式,然后也測過幾組手機號和座機號,感覺沒問題就搬過來了;現(xiàn)在看來是當初沒有測試得全面,而且我根本沒有認真去檢查這個搬過來的正則表達式寫得到底對不對,所以才導(dǎo)致了文章開頭那個問題的產(chǎn)生,所以在這里還是要提醒一下大家:對待網(wǎng)上的資料一定要謹慎?。?!
? ? ? ? 入正題:通過簡單的復(fù)習(xí)了一下正則表達式,然后再來觀察上面那個正則表達式,就會很容易發(fā)現(xiàn)問題了:
? ? ? ? 出錯的正則表達式:
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$|\\d{3}-\\d{8}|\\d{4}-\\{7,8}
? ? ? ? 分析示例:
? ? ? ? 當校驗字符串為類似手機號、座機號的格式,是沒有問題的:
13400009999
14500009999
15500009999
16200009999
17799990000
18899990000
19000009999
020-11800000
????????錯誤示例:
0750-22637456
? ? ? ? 原因很簡單,其實就是因為正則表達式最后面那塊錯了:
\\{7,8}
? ? ? ? 因此,只要把它改成匹配7-8為數(shù)字即可。
解決方法:
????????將出錯的正則表達式:
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$|\\d{3}-\\d{8}|\\d{4}-\\{7,8}
? ? ? ? 改為:
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$|\\d{3}-\\d{8}|\\d{4}-\\d{7,8}
? ? ? ? 區(qū)別在于:\\{7,8} 改為了?\\d{7,8}
拓展:
? ? ? ? 這里記錄一下我們常見的一些正則表達式(不定期更新,親測有效,如有誤歡迎糾錯):
1、手機號或座機:
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$|\\d{3}-\\d{8}|\\d{4}-\\d{7,8}
2、郵箱:
[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
3、中文:
任意長度的中文字符:[\u4e00-\u9fa5]
固定長度的中文字符:^[\u4e00-\u9fa5]{指定長度}$
大于等于指定長度的中文字符:^[\u4e00-\u9fa5]{指定長度,}$
4、數(shù)字:
任意長度的數(shù)字:^[0-9]*$
固定長度的數(shù)字:^\d{指定長度}$
大于等于指定長度的數(shù)字:^\d{指定長度,}$
5、英文:
任意大小寫字母:^[A-Za-z]+$
任意大寫字母:^[A-Z]+$
任意小寫字母:^[a-z]+$
6、組合:
任意英文、數(shù)字:^[A-Za-z0-9]+$
任意中文、數(shù)字:^[\u4e00-\u9fa50-9]+$
任意中文、英文:^[\u4e00-\u9fa5A-Za-z]+$文章來源:http://www.zghlxwxcb.cn/news/detail-604354.html
任意中文、英文、數(shù)字:^[\u4e00-\u9fa5A-Za-z0-9]+$文章來源地址http://www.zghlxwxcb.cn/news/detail-604354.html
到了這里,關(guān)于常見的正則表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!