但是在上節(jié)內(nèi)容介紹的那個(gè)表達(dá)式也可以用來匹配類似010)12345678或(022-87654321這樣的錯(cuò)誤的格式。怎么辦?要想解決這個(gè)問題,我們可以使用分枝條件。正則表達(dá)式里的分枝條件指的是有幾種規(guī)則,只要滿足這些規(guī)則中的任意一種,都會(huì)被當(dāng)成匹配,因此我們要使用 |
把這些規(guī)則分開。為了更好的理解上述內(nèi)容,我們來看看幾個(gè)例子:
0\d{2}-\d{8}|0\d{3}-\d{7}
這個(gè)表達(dá)式能匹配兩種以連字號(hào)分隔的電話號(hào)碼:一種是三位區(qū)號(hào),8位本地號(hào)(如010-12345678),一種是4位區(qū)號(hào),7位本地號(hào)(0376-2233445)。
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}
這個(gè)表達(dá)式匹配3位區(qū)號(hào)的電話號(hào)碼,其中區(qū)號(hào)可以用小括號(hào)括起來,也可以不用,區(qū)號(hào)與本地號(hào)間可以用連字號(hào)或空格間隔,也可以沒有間隔。你可以試試用分枝條件把這個(gè)表達(dá)式擴(kuò)展成也支持4位區(qū)號(hào)的。
\d{5}-\d{4}|\d{5}
這個(gè)表達(dá)式用于匹配美國的郵政編碼。美國郵編的規(guī)則是5位數(shù)字,或者用連字號(hào)間隔的9位數(shù)字。之所以要給出這個(gè)例子是因?yàn)樗苷f明一個(gè)問題:使用分枝條件時(shí),要注意各個(gè)條件的順序。如果你把它改成\d{5}|\d{5}-\d{4}
的話,那么就只會(huì)匹配5位的郵編(以及9位郵編的前5位)。原因是匹配分枝條件時(shí),將會(huì)從左到右地測試每個(gè)條件,如果滿足了某個(gè)分枝的話,就不會(huì)去再管其它的條件了。
更多建議: