通用正則表達式
譯者:張桂權
(出自《正則表達式袖珍手冊》一書。譯者,張桂權。可以從http://download.csdn.net/source/346896下載完整的譯稿)
本節包含簡單的通用正則表達式模式。爲了滿足需要,你可能需要進行必要的調整。
這兒只給出了每一個表達式和它們匹配的目標字符串和不匹配的字符串。爲了滿足需要,你可能需要進行必要的調整。
採用Perl風格來書寫:
/模式/形式
s/模式/替換/形式
訣竅
去掉前導和末尾的空格
s/^/s+//
s//s+$//
匹配:“ foo bar ” 和 “foo ”
不匹配:“foo bar”
0到999999之間的數字
/^/d{1,6}$/
匹配:42和678234
不匹配:10,000 (帶分隔符的1萬)
驗證HTML十六進制編碼
/^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?$/
匹配:#fff、#1a1、#996633
不匹配:#ff和FFFFFF
美國社會安全碼
/^/d{3}-/d{2}-/d{4}$/
匹配:078-05-1120
不匹配:078051120和1234-12-12
美國郵政編碼
/^/d{5}(-/d{4})?$/
匹配:94941-3232和10024
不匹配:949413232
美國貨幣
/^/$/(d{1,3}(/,/d{3})*|/d+)(/./d{2})?$/
匹配:$20和$15,000.01
不匹配:$1.001和$.99
匹配日期MM/DD/YYYY HH:MM:SS
/^/d/d///d/d//d/d/d/d /d/d:/d/d:/d/d$/
匹配:04/03/1978 20:45:38
不匹配:4/03/1978 20:45:38和4/3/78
前導路徑名
/^.*///
匹配:/usr/local/bin/apachectl
不匹配:c://System/foo.exe
(請參看 MRE 190-192)
點分IP地址
/^(/d|[01]?/d/d|2[0-4]/d|25[0-5])/ .
(/d|[01]?/d/d|2[0-4]/d|25[0-5])/ .
(/d|[01]?/d/d|2[0-4]/d|25[0-5])/ .
(/d|[01]?/d/d|2[0-4]/d|25[0-5])$/
匹配:127.0.0.1和224.22.5.110
不匹配:127.1
(請參看 MRE 187-189)
MAC地址
/^([0-9a-fA-F]{2}:){5}[0-9a-fA-f]{2}$/
匹配:01:23:45:67:89:ab
不匹配:01:23:45和0123456789ab
/^[0-9a-zA-Z]([-./w]*[0-9ª-zA-Z_+])*@([0-9a-zA-Z][-/w]*
[0-9a-zA]/.)+[a-zA-Z]{2,9}$/
匹配:[email protected]、[email protected]和[email protected]
不匹配:[email protected]、[email protected]和[email protected]
(請參看 MRE 70)
HTTP URL
/(http?):/ / / /([0-9a-zA-Z][-/w]*[0-9a-zA-Z]/.)+
[a-zA-Z]{2,9})
(:/d{1,4})?([-/w//#~:.?+=&%@~]*)/
匹配:https://example.com和http://foo.com:8080/bar.html
不匹配:ftp://foo.com和ftp://foo.com/