2014-02-12 88 views
1

一個正則表達式,用於表示字符串中至少有10個數字字符。至少x個數字字符的javascript正則表達式

可以有10多個,但不能少於10個。 在隨機的地方可以有任意數量的其他字符,將數字分開。

示例數據:

(123) 456-7890 
123-456-7890 ext 41 
1234567890 
etc. 
+0

'/ \ d {10} \ d */g'? –

回答

2

爲了確保在免得10位是有使用這個表達式:

/^(\D*\d){10}/ 

代碼:

var valid = /^(\D*\d){10}/.test(str); 

測試:

console.log(/^(\D*\d){10}/.test('123-456-7890 ext 41')); // true 
console.log(/^(\D*\d){10}/.test('123-456-789')); // false 

EXPL anation:

^ assert position at start of the string 
1st Capturing group (\D*\d){10} 
Quantifier: Exactly 10 times 
Note: A repeated capturing group will only capture the last iteration. 
Put a capturing group around the repeated group to capture all iterations or use a 
non-capturing group instead if you're not interested in the data 
\D* match any character that's not a digit [^0-9] 
Quantifier: Between zero and unlimited times, as many times as possible 
\d match a digit [0-9] 
+0

我討厭regexps。即使我已經使用過它們知道有多少年了,但它並不是立即顯而易見的。 – Alnitak

+0

我加了一些解釋。 – anubhava

2

它可能簡單到只是擺脫所有的非數字字符,算還剩下什麼:

var valid = input.replace(/[^\d]/g, '').length >= 10 

注:.replace不會修改原始字符串。

0
(\d\D*){10} 

一個數字,隨後通過任何數目的非數字,十次。

相關問題