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