
文章插圖
接著上篇 , 這篇我們以一個(gè)手機(jī)號(hào)碼的匹配進(jìn)化歷程來學(xué)習(xí)正則的相關(guān)知識(shí)點(diǎn) 。記住了 , 我們要匹配一個(gè)手機(jī)號(hào)(用正則表達(dá)式) , 整篇就是干這個(gè)事 。目的是學(xué)習(xí)正表達(dá)式的使用 。
假設(shè)我們需要匹配的手機(jī)號(hào)為:18857012018
一、字符直接量:匹配自身/18857012018/.test(“ 18857012018”);
// false
/18857012018/.test(“ 18857012018”);
// true
/18857012018/.test(“ui18857012018dd”);
// true
正則表達(dá)式在匹配時(shí) , 只要輸出匹配內(nèi)容就返回true , 不考慮前面的ui和后面的dd 。最后這種情況顯然不是我們想要的 。
如何精準(zhǔn)匹配了 , 接著往下看 。
二、錨點(diǎn):指定匹配位置1、^匹配起始位置
/^http:/.test(“http://www.163.com”);
// true
/^http:/.test(“ahttp://www.163.com”);
//false
/^http:/.test(“https://www.163.com”);
//false
2、$匹配結(jié)尾位置
/.jpg$/.test(“1.jpg”); //true
/.jpg$/.test(“1.jpg png”); //false
/.jpg$/.test(“1.png”); //false
/.jpg$/.test(“regexp.png”); //false
3、b匹配一個(gè)單詞邊界
正則表達(dá)式的“匹配”有兩種概念 , 一種是匹配字符 , 一種是匹配位置 。這里所謂的邊界就是匹配位置 。
/bisb/.test(“this”); //false
/bisb/.test(“that is reg”); //true
/bisb/.test(“thatisreg”); //false
/B[Ss]cript/; // 匹配非邊界
最后一個(gè)正則表達(dá)式/B[Ss]cript/能夠與”JavaScript”和”/postscript”匹配 , 但不與”script”與”Script”匹配 , 因?yàn)锽表示非邊界匹配 。
講清楚上面三點(diǎn)之后 , 現(xiàn)在我們來對(duì)一開始提到的那個(gè)電話號(hào)碼的例子進(jìn)行進(jìn)一步的改造 。改造之后是這樣的:
/^18857012018$/.test(“18857012018”); //true
/^18857012018$/.test(“ui18857012018dd”);//false
/^18857012018$/.test(“13712345674″);//false
這樣看 , 是不是解決了號(hào)碼前后有字符不匹配的情況 , 但是細(xì)心的同學(xué)會(huì)發(fā)現(xiàn) , 這個(gè)正則只能識(shí)別這個(gè)標(biāo)準(zhǔn)的手機(jī)號(hào)碼 , 能不能用一種電話號(hào)碼格式識(shí)別所有的電話號(hào)碼了?如果能 , 那這個(gè)表達(dá)式不就更通用了嘛 。
回答是有的 , 不急 , 繼續(xù)往下看
三、字符類:匹配一類字符中的一個(gè)[abc]:匹配a或b或c 。[0-9]:匹配0到9之間的一個(gè)數(shù)字(只要字符串中有一個(gè)數(shù)字就為true,定義是匹配字符串中是否有數(shù)字) 。[^0-9]:匹配非數(shù)字一個(gè)字符 。[a-z]:匹配有一個(gè)字母(只要字符串有一個(gè)字母就為true,定義是匹配字符串中是否有字符) 。.:匹配任一字符(換行符除外) 。語法應(yīng)用舉例 , 比如:
/[0-9]/.test(“123”) //true
/[0-9]/.test(“asd”) //false
/[^0-9]/.test(“asd”) //true
/[a-z]/.test(“asd”) //true
/./.test(“allen”) //true
/./.test(“12″) //true
/[a-z]/.test(’12a3′) // true
/[a-z]/.test(‘123’) // false
有了這些為基礎(chǔ) , 上面的實(shí)例我們就可以進(jìn)一步改進(jìn) , 電話號(hào)碼中除了第一位是1 , 其它每一位都是一個(gè)0到9之間的任意數(shù)字 。所以我們可以這樣改進(jìn):
/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/.test(“13762571094”);//true
/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/.test(“13712345678″);//true
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- python入門詳細(xì)教程 append函數(shù)是什么意思
- 免費(fèi)的編程自學(xué)網(wǎng)站 python免費(fèi)自學(xué)行嗎
- python的實(shí)驗(yàn)報(bào)告參考文獻(xiàn) python參考文獻(xiàn)有哪些
- 簡單python爬蟲完整代碼 python爬蟲案例講解
- 正則表達(dá)式的匹配規(guī)則 正則匹配任意字符和空格
- python與java的區(qū)別 java語言的主要特點(diǎn)是什么
- python開發(fā)工具分享 eclipse安裝pydev插件步驟
- python爬蟲教程 python部落沖突腳本
- Python列表常用操作小技巧 python中map函數(shù)的用法
- 正則表達(dá)式使用實(shí)例 oracle如何使用正則表達(dá)式
