2010-07-28 28 views
1

幫助需要修復這個正則表達式如何解決這個正則表達式?

^\d{2}\-\d{3}\-\d{6} 

其驗證該格式11-111-111111一個小東西。它工作正常。但最後一位(6位數字)也驗證超過6位數字。這意味着如果我把11-111-11111111(最後8位數字),上述正則表達式正在驗證它?

有人可以告訴我如何限制它只有6位數?

回答

1

我能夠通過在正則表達式的末尾添加$來實現。這將導致它在比賽結束時只識別6位數字。

目前,它與您的8位數字條目相匹配,因爲它始於前6位數字。

5

在正則表達式的結尾處輸入$$是字符串或行結束錨,並將確保在最後一節中不超過6位數字(因爲字符串必須在此之後結束)。

11

確實也標誌着字符串($)爲您的字符串(^)開始這樣做是結束:

^\d{2}\-\d{3}\-\d{6}$ 

現在整個字符串必須匹配這種模式。

+0

加油!這種答案有多少票? – Gumbo 2010-07-28 15:17:44

2

您希望使用$來表示行的末尾,就像您使用^來表示行的開頭一樣。

0

$放在你的正則表達式的末尾。

此符號表示「表達式的結尾」。

0
(^\d{2}\-\d{3}\-\d{6})\D 

將匹配6位數字後跟非數字的任何內容,假設您實際上並不期望該行結束。

1

如果你想趕上字符串,即使它不是一個行的末尾,使用

^\d{2}\-\d{3}\-\d{6}\D 

指定的6個數字後到來的東西必須是一個非數字字符。

1
^\d{2}-\d{3}-\d{6}(?:\D|$) 

最後一部分(?:\D|$)匹配任何不是一個數字或線

0

您正則表達式的基礎是存在的結束,但你需要把在boundarys。

下面的正則表達式匹配你想要的並捕獲數字字符串。它的兩端都是非數字或字符串的開始/結尾。

(?:[^\d]|^)(\d{2}-\d{3}-\d{6})(?:[^\d]|$)