假設我有一個郵政編碼的正則表達式。正則表達式基本;防止外部標點符號
'\<[0-9]{5}(-[0-9]{4})?\>'
這適用於:
XXXXX
XXXXX-XXXX
但它也對數字上匹配:
XXXX-
.XXXX-
我應該使用什麼來防止這種情況發生?
假設我有一個郵政編碼的正則表達式。正則表達式基本;防止外部標點符號
'\<[0-9]{5}(-[0-9]{4})?\>'
這適用於:
XXXXX
XXXXX-XXXX
但它也對數字上匹配:
XXXX-
.XXXX-
我應該使用什麼來防止這種情況發生?
你似乎想從一開始你的對手anchor到字符串的結尾,否則它也將嘗試匹配輸入的部分:
'^\<[0-9]{5}(-[0-9]{4})?\>$'
你不指定這個字符串有成爲它的開始和結束。只需添加^
以指示行的開始,並添加$
以指示行結束。
所以結果是:(假設\<
和\>
是您的語言或其他東西所需要的)。
'\<^[0-9]{5}(-[0-9]{4})?$\>'
\ < and \>標記單詞的開始和結尾。我已經注意到,上述不起作用: adfsfds xxxxx sfasdsdf sadfds xxxxx-xxxx kdkdk – user2014176 2013-02-14 05:52:31
這是原始的海報。
'^\<[0-9]{5}(-[0-9]{4})?\>$'
和
'\<^[0-9]{5}(-[0-9]{4})?$\>'
不匹配噪音線,如:
lskdjfasfldj XXXXX asfsdfsdf
sdkdsa XXXXX-XXXX asdfsd
兩個正則表達式只匹配在一行的開始,而不是在中間一條線。
此外,我使用基本的正則表達式在Unix系統上使用grep -E。
請[edit](http://stackoverflow.com/posts/14856773/edit)你的問題,如果你有新的信息。 – Bergi 2013-02-13 18:26:01
你正在使用什麼編程語言/正則表達式引擎? – geoffspear 2013-02-13 15:20:30
你的正則表達式不匹配最後2個數字。你是如何測試它的? – 2013-02-13 15:21:52
那些'\ <' and '\>'有什麼用處? – Bergi 2013-02-13 15:22:49