無論是網頁程式設計還是其他程式設計,都無可避免的要處理字串,但是有的複雜字串並不適合用所用語言去處理,比如說註冊的時候限定輸入格式,web前後端互動的時候處理提交 的資料,在某些情況下,字串的處理至關重要,但是人們又不想使用複雜的語法去實現這個功能,而強大的正規表示式提供了乙個很好的解決方法,這可能和windows或者linux操作性體統中的查詢有點類似。
1、正規表示式中強大的元字元
查詢乙個簡單的單詞
比如精確查詢我的英文名chou,那麼應該使用\bchou\b來查詢(\b是正規表示式中的乙個特殊**,代表單詞的開頭或者結束也就是分詞處),在比如去匹配兩個分開的單詞「 andy chou」,那麼應該使用\bandy\b.*\bchou\b,解釋一下這個地方,「.」是另乙個字元元匹配除了換行符以外的任意字元,「*」也是乙個是元字元,不過它代表的不是別的而是數量——它指定「*」前邊的內容可以連續重複使用任意次以使整個表示式得到匹配。先在回頭看一下剛才匹配「andy chou」那個表示式,\bandy\b匹配andy,*重複包括字元andy在內的不包括換行符的部分,然後再查詢的範圍內不斷查詢後面的那個chou字元,能不能查到就看查詢的範圍中是不是有了。
想象一下這種情況,當我們去註冊某個賬號的時候,不是經常需要提供手機號碼或者郵箱麼,那就是正規表示式乙個應用的很多的地方。在往下講的時候先介紹乙個新的元字元\d,它具有匹配乙個數字的功能。舉個簡單的例子:註冊的時候需要輸入***-******格式的**號碼,你可以使用\d\d\d-\d\d\d\d\d\d\d\d就可以達到我們想要的效果,上面正規表示式中的「-」符號是個連線符號。但是仔細想想,用來驗證這個整個表示式是不是太冗餘了,如果是位數很多的情況下呢,如果你能這麼想,那麼說明你是個追求上進的人,哈哈!我們可以把它優化成:\d-\d。有意思的來了,表示表示式不多不少剛好匹配3次,也是一樣的道理。起始這裡涉及裡正規表示式的乙個常見用法——查詢次數表示式(書面語叫限定符)的書寫,看下面的**你應該會很清楚,解釋都有。
限定符功能
?重複0次或者1次
+重複1次或者多次
*重複0次或者多次
重複n次
重複n次以上
重複n到m次
接著來看另外乙個元字元\w(它可以匹配字母,數字,下劃線,漢字)
有這種情況,有時候我們查詢字串我們只關心字元的開始或者結束,比如以a開始的單詞,或者以b結尾的單詞。用第乙個以字母a開頭的列子來說,我們應該有這樣的思路,乙個單詞的開始也就是說乙個單詞的分詞處,那麼我們應該能用上上面說的元字元\b,所以我們現在已經可以寫出一部分表示式\ba,在考慮一下,我們並不關心a後面接的是什麼字元,也不關心多少個,也可能只有它自己,但它匹配的正常情況下一定是字母,\w可以匹配字母等,進一步寫成\ba\w,所以應該再後面加上限定符\ba\w*,結尾\ba\w*\b,ok,可以測試一下
好久沒寫部落格了,如果上面有錯,還請各路大神支聲,剩下的內容有時間再補全
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 一
若你使用過windows dos下用於檔案查詢的萬用字元,也就是 和?如果你想查詢某個目錄下的所有的word文件的話,你會搜尋 doc。會被解釋成任意的字串。和萬用字元類似,正規表示式也是用來進行文字匹配的工具,只不過比萬用字元更能精確地描述你的需求。比如你可以編寫乙個正規表示式來查詢所有以0開頭,...
正規表示式一
工欲善其事,必先利其器,jq原始碼中充斥的大量的正規表示式,我準備根據李炎恢老師的正規表示式的講解,寫一篇有關正規表示式的筆記!不墨跡,直接進入正題!ecmascript 的 regexp 類 表示正規表示式 正規表示式在jq中被大量運用,主要是為了檢索字串,進行匹配 建立正規表示式 var box...