2009-11-10 104 views
1

我有一個正則表達式用來檢查是否值至少有10個數字:的Javascript正則表達式的問題

if (foo.match(/^\d{10,}$/)) 
{ 
// At least 10 digits 
} 

但是我想在2個步驟來劃分的驗證,所以首先我檢查,如果foo得到了唯一的編號,並沒有其他字符,然後我檢查它是否至少有10位數字。

我可以使用foo.length來檢查10位數字部分,但是如何更改上面的正則表達式來檢查foo是否只有數字。有任何想法嗎?

回答

2

一個解決方案:從「10個以上」改變資格「一個或多個」,正是如此:

if (foo.match(/^\d+$/)) 
{ 
// At least 1 digit 
} 

如果空字符串是可接受的,使用*代替+以匹配「零個或多個」。

3

你已經檢查它只有數字。您指定的字符串開始^,後面至少十個位數的模式必須匹配,緊接着字符串結束$

潛行任何非數字的存在,我們的模式將不匹配

這意味着,如果你想把你的測試分成兩個步驟,比如說有兩個不同的錯誤消息,你可以先檢查長度,然後仍然使用該正則表達式模式。

+0

+1一樣我刪除評論 – 2009-11-10 17:40:32

+0

我不想先檢查長,我要檢查其數字或不先。請在回答之前閱讀問題 – 2009-11-10 17:48:50

0
if (foo.match(/^\d+$/)) { 
//all digits 
    if(foo.length == 10) { 
    //all digits + 10 lenght 
    //do whatever 
    } 
} else { 
    //issue error message 
} 

這是一種方法。雖然我不明白你爲什麼需要這樣做。你自己的正則表達式已經保證了是爲10個字符長,這些10個字符不能是別的然後是數字

+0

如果輸入有非數字,請將支票分開以發出不同的錯誤消息。 – mob 2009-11-10 17:43:27

0
var containsOnlyNumbers = /^\d+$/.test(foo); 
0

失敗,如果

foo.match(/\D/) 
0
// Invalid: A non-digit is present 
if (foo.match(/\D/)) { 
    console.warn("Only numbers accepted"); 
} 
// Invalid: foo is all digits, but less than 10 digits 
else if (foo.length < 10) { 
    console.warn("Minimum 10 digits required"); 
} 
// foo is valid 
else { 
    console.info("Great success"); 
}