サマリー:首先簡單介紹下正則表達式: 在編寫處理字符串的程序或網(wǎng)頁時,經(jīng)常會有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達式就是用于描述這些規(guī)則的工具。換句話說,正則表達式就是記錄文本規(guī)則的代碼。下面就看看正則表達式里亂七八糟的字符都是什么意思:1、常用的元字符那我們試著理解下:\bhello\b 其實就是查找單詞hello了——先是某個單詞開始
首先簡單介紹下正則表達式:
在編寫處理字符串的程序或網(wǎng)頁時,經(jīng)常會有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達式就是用于描述這些規(guī)則的工具。換句話說,正則表達式就是記錄文本規(guī)則的代碼。
下面就看看正則表達式里亂七八糟的字符都是什么意思:
1、常用的元字符
那我們試著理解下:
\bhello\b 其實就是查找單詞hello了——先是某個單詞開始處(\b),然后是字符串hello,最后是單詞結(jié)束處(\b)。
010-\d\d\d\d\d\d\d\d 比如北京的固定電話——先是010-,然后是8個數(shù)字(\d)。
^\d{18}$ 比如身份證號——先是字符串開始(^),然后是18位數(shù)字(\d),最后字符串結(jié)束($)。
2、常用的限定符
\ba\w*\b 匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然后是字母a,然后是任意數(shù)量的字母或數(shù)字(\w*),最后是單詞結(jié)束處(\b)。
windows\d+ 匹配windows開頭后面是一位或多位數(shù)字的,windows7、windows10等等——\d+即匹配一次或多次數(shù)字。
010-\d{8} 也是匹配北京固定電話,跟上面010-\d\d\d\d\d\d\d\d是一個意思,這個更簡便——\d{8}就是連續(xù)匹配八次數(shù)字的意思。
3、常用的反義代碼
"s[^"]+" 匹配用引號括起來的以s開頭的字符串。
4、常用分組語法
\b\w*h(?!e)\w*\b 這個相對復(fù)雜一點,但是借助上面的表格,應(yīng)該也能讀懂,下面詳細分析下——單詞開始(\b);然后跟零個或多個字母(\w*),因為是單詞嘛,就只能是字母啦;接著是字母h,后面接一個不是e的字符(?!e),然后又是零個或多個字母(\w*),直到單詞結(jié)束(\b)。那我們就清楚了,也就是找“含有h字母,但h后面不是e的單詞”,比如him、honey。而把諸如hello、help這樣的單詞排除。
5、懶惰限定符
當正則表達式中包含能接受重復(fù)的限定符時,通常的行為是匹配盡可能多的字符。例如:a.*b 它將會匹配最長的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會匹配整個字符串a(chǎn)abab。這被稱為貪婪匹配;但是用 a.*?b 搜索的話會匹配aab(第一到第三個字符)和ab(第四到第五個字符),這叫懶惰匹配。
6、常用的其他符號
下面是//i和//g的用法,我們從一段代碼中加深理解:
<html> <body> <script type="text/javascript"> var str="Welcome to Microsoft! "; str=str + "We are proud to announce that Microsoft has "; str=str + "one of the largest Web Developers sites in the world."; document.write(str.replace(/Microsoft/i, "W3School")); </script> </body> </html>
上面的代碼呢,是想把字符串中的Microsoft替換成W3School,當正則表達式為/Microsoft/i時,運行結(jié)果:Welcome to W3School! We are proud to announce that Microsoft has one of the largest Web Developers sites in the world. 可以看出只有第一個Microsoft被替換了,即一次匹配。
我們將正則表達式/Microsoft/i改為/Microsoft/g,結(jié)果就變?yōu)椋篧elcome to W3School! We are proud to announce that W3School has one of the largest Web Developers sites in the world. 也就是說全文凡是有Microsoft的地方都被替換成W3School,即全局匹配。
當然還有很多代碼沒有涉及到,但是很多正則表達式應(yīng)該能看懂了,入門了后面的學習就相對簡單了。如果沒懂可能確實我講得不清楚。大家可以去搜索相關(guān)更多文章,每個作者表達事情的方式都不一樣,你可以看看你能更快更好地接收誰的說法。