2009-04-24 78 views
8

精確長度我有一個驗證輸入的值的兩個正則表達式。如何檢測在正則表達式

一個允許字母數字值的任何時間長度:

@"^\s*(?<ALPHA>[A-Z0-9]+)\s*" 

而且只有對方允許數值:

@"^\s*(?<NUM>[0-9]{10})" 

我怎樣才能獲得的11長度的數字串不被NUM正則表達式捕獲。

回答

12

我想你想說的是,你不想超過10位數字。因此,只需在末尾添加$即可指定正則表達式的結尾。

例子:@"^\s*(?[0-9]{10})$"


這是我原來的答案,但我覺得我讀你太準確。

string myRegexString = `@"(?!(^\d{11}$)` ... your regex here ...)"; 

,上面寫着「而未來是不是開始,11位,結束」

+0

感謝,這就是我一直在尋找... – CheGueVerra 2009-04-27 15:52:21

0

匹配東西長10串後非數字。我的正則表達式不是很好,但我認爲你已經在那裏設置了一個長度爲10的數字字符串,但是因爲在此之後你不匹配任何東西,所以長度爲11的字符串也會匹配。嘗試匹配超過數字的結尾,你會很好。

0

你可以嘗試交替?

^\s*(?\d{1,10}|\d{12,}) 
4

如果它是單行線,你可以指定你的對手必須在該行的末尾發生,像這樣。網...

^\s*([0-9]{10})\z 

將接受1234567890但拒絕12345678901.

0

這應該和之前的數字後僅匹配10位數字,並允許空格的任意數字。

非捕獲版本:(只匹配,匹配的數字不存儲)

^\s*(?:\d{10})\s*$ 

捕捉版本:(匹配的數字是在分組1可用,$ 1或\ 1)

^\s*(\d{10})\s*$ 
0

如果你正在嘗試只匹配是10個位數號碼,只需添加使用$拖錨,像這樣:

^\s*(?:[0-9]{10})\s*$ 

這將匹配任何長度正好爲10位數的數字(每邊都有可選空間)。

2

你的意思是你想匹配高達 10位?試試這個:

@"^\s*[0-9]{1,10}\s*$" 
0

var pattern =/\b[0-9]{10}$\b/; 
 

 
// the b modifier is used for boundary and $ is used for exact length