1,正則表達(dá)式會(huì)去查找字符串中符合某個(gè)模式的部分,在 JAVAScript 中,正則表達(dá)式的創(chuàng)建方法是放在一對(duì)"/"之間,或者用 newRegExp(),隨后再調(diào)用 match,test 或者 replace 方法。
你可以事先定義正則表達(dá)式,也可以在調(diào)用方法時(shí)直接定義:
2,使用 match方法,一次匹配一個(gè)字符或者將多個(gè)字符放入方括號(hào) []中以捕獲任何匹配的字符,使用連字號(hào) -來捕獲特定范圍的字符:
3,在正則表達(dá)式末尾添加可選的修飾符來定義表達(dá)式的匹配方式,在 JS 中,我們的修飾符有:
- i:大小寫不敏感(case insensitive)
- m:多行匹配(multi line matching)
- g:全局匹配(global match)
4,在開始出插入符號(hào) ^表示匹配位置在字符串開頭,在正則末尾插入符號(hào) $表示匹配位置在字符串結(jié)尾,現(xiàn)在可以開始將多個(gè)匹配條件組合起來匹配更長(zhǎng)的字符串:
5,使用通配符和特殊轉(zhuǎn)義字符來匹配較長(zhǎng)的字符串。
.:除換行以外的任何字符
d:數(shù)字
D:非數(shù)字
s:空格
S:非空格
n:新行
6,僅匹配特定數(shù)量的字符,量詞縮寫:
?:相當(dāng)于{0,1},表示有匹配的或者沒有匹配的;
+:相當(dāng)于{1, },表示至少匹配一次;
{3}:表示剛好出現(xiàn)了3次;
{2,4}:表示出現(xiàn)了2-4次;
*:相當(dāng)于{0,},也就是出現(xiàn)包括0在內(nèi)的任意次。
7,使用圓括號(hào) ()為字符串分組,match 方法會(huì)返回被匹配的字符串以及符合匹配條件的部分,除非在正則表達(dá)式中加入修飾符 g。在括號(hào)中使用 |符號(hào)來實(shí)現(xiàn)多選分支,|相當(dāng)于“或”:
8,需要匹配特殊字符時(shí),使用反斜杠 轉(zhuǎn)義。JS 正則表達(dá)式中的特殊字符是 ^$ .*+?()[]{}|,因此在需要匹配一個(gè)星號(hào)時(shí),應(yīng)該寫作 *而不是 *:
9,需要匹配排除某個(gè)字符以外的字符時(shí),在方括號(hào)中使用 ^字符進(jìn)行排除字符組, ^在這里相當(dāng)于是求反,但記住在之前的第4點(diǎn)中,它還有“字符串開始”的意思,所以一定要正確書寫。
10,正則表達(dá)式可以被用于查找和匹配各種各樣的內(nèi)容,包括 url 和文件名,然而如果你在嘗試將正則表達(dá)式用于更加復(fù)雜的內(nèi)容,比如解析電子郵件(比你想象的更復(fù)雜)或者是解析 html(記住html并不是一門常規(guī)的語言,它并不能被正則表達(dá)式完全解析)時(shí),請(qǐng)務(wù)必謹(jǐn)慎小心。
正則表達(dá)式的水遠(yuǎn)比這篇文章深,比如我們并沒有講到貪婪匹配,惰性匹配,先行斷言(lookahead)和捕獲等內(nèi)容,但上面所總結(jié)的內(nèi)容是 web 開發(fā)者在日常工作中最常用的一些功能與寫法,想要看看一些復(fù)雜的正則表達(dá)式實(shí)例就請(qǐng)期待我們下一次的推送吧!