2013-02-13 77 views
0

假設我有一個郵政編碼的正則表達式。正則表達式基本;防止外部標點符號

'\<[0-9]{5}(-[0-9]{4})?\>' 

這適用於:

XXXXX 
XXXXX-XXXX 

但它也對數字上匹配:

XXXX- 
.XXXX- 

我應該使用什麼來防止這種情況發生?

+2

你正在使用什麼編程語言/正則表達式引擎? – geoffspear 2013-02-13 15:20:30

+2

你的正則表達式不匹配最後2個數字。你是如何測試它的? – 2013-02-13 15:21:52

+0

那些'\ <' and '\>'有什麼用處? – Bergi 2013-02-13 15:22:49

回答

0

你似乎想從一開始你的對手anchor到字符串的結尾,否則它也將嘗試匹配輸入的部分:

'^\<[0-9]{5}(-[0-9]{4})?\>$' 
0

你不指定這個字符串有成爲它的開始和結束。只需添加^以指示行的開始,並添加$以指示行結束。

所以結果是:(假設\<\>是您的語言或其他東西所需要的)。

'\<^[0-9]{5}(-[0-9]{4})?$\>' 
+0

\ < and \>標記單詞的開始和結尾。我已經注意到,上述不起作用: adfsfds xxxxx sfasdsdf sadfds xxxxx-xxxx kdkdk – user2014176 2013-02-14 05:52:31

0

這是原始的海報。

'^\<[0-9]{5}(-[0-9]{4})?\>$' 

'\<^[0-9]{5}(-[0-9]{4})?$\>' 

不匹配噪音線,如:

lskdjfasfldj XXXXX asfsdfsdf 
sdkdsa XXXXX-XXXX asdfsd 

兩個正則表達式只匹配在一行的開始,而不是在中間一條線。

此外,我使用基本的正則表達式在Unix系統上使用grep -E。

+0

請[edit](http://stackoverflow.com/posts/14856773/edit)你的問題,如果你有新的信息。 – Bergi 2013-02-13 18:26:01

相關問題