幫助需要修復這個正則表達式如何解決這個正則表達式?
^\d{2}\-\d{3}\-\d{6}
其驗證該格式11-111-111111一個小東西。它工作正常。但最後一位(6位數字)也驗證超過6位數字。這意味着如果我把11-111-11111111(最後8位數字),上述正則表達式正在驗證它?
有人可以告訴我如何限制它只有6位數?
幫助需要修復這個正則表達式如何解決這個正則表達式?
^\d{2}\-\d{3}\-\d{6}
其驗證該格式11-111-111111一個小東西。它工作正常。但最後一位(6位數字)也驗證超過6位數字。這意味着如果我把11-111-11111111(最後8位數字),上述正則表達式正在驗證它?
有人可以告訴我如何限制它只有6位數?
我能夠通過在正則表達式的末尾添加$
來實現。這將導致它在比賽結束時只識別6位數字。
目前,它與您的8位數字條目相匹配,因爲它始於前6位數字。
在正則表達式的結尾處輸入$
。 $
是字符串或行結束錨,並將確保在最後一節中不超過6位數字(因爲字符串必須在此之後結束)。
確實也標誌着字符串($
)爲您的字符串(^
)開始這樣做是結束:
^\d{2}\-\d{3}\-\d{6}$
現在整個字符串必須匹配這種模式。
您希望使用$
來表示行的末尾,就像您使用^
來表示行的開頭一樣。
把$
放在你的正則表達式的末尾。
此符號表示「表達式的結尾」。
(^\d{2}\-\d{3}\-\d{6})\D
將匹配6位數字後跟非數字的任何內容,假設您實際上並不期望該行結束。
如果你想趕上字符串,即使它不是一個行的末尾,使用
^\d{2}\-\d{3}\-\d{6}\D
指定的6個數字後到來的東西必須是一個非數字字符。
^\d{2}-\d{3}-\d{6}(?:\D|$)
最後一部分(?:\D|$)
匹配任何不是一個數字或線
您正則表達式的基礎是存在的結束,但你需要把在boundarys。
下面的正則表達式匹配你想要的並捕獲數字字符串。它的兩端都是非數字或字符串的開始/結尾。
(?:[^\d]|^)(\d{2}-\d{3}-\d{6})(?:[^\d]|$)
加油!這種答案有多少票? – Gumbo 2010-07-28 15:17:44