2015-04-06 84 views
0

我有一個正則表達式驗證重複數字,例如 像111-111-1111 or 2222222222 or 333.333.3333這樣的數字返回爲不匹配。正則表達式來驗證捕獲5個不同的重複數字

然而像1234567789 or 789-234-5671這樣的數字是匹配的。我無法驗證數字,如1234512345 or 456-784-5678

有人可以幫助我更新我的正則表達式,以便它也可以驗證並返回不匹配的數字,如1234512345 or 456-784-5678

我現在的正則表達式是

^(?=(?!([0-9])\1{2}[-. ]*\1{3}[-. ]*\1{4}$))\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$ 
+0

什麼是錯'456-784-5678'? –

+0

原來是重複數字456-784-5678 - > 45678重複兩次 – Letitia

+0

在嘗試與正則表達式匹配之前,您可以刪除連字符嗎?你在用什麼語言?你可以使用自定義函數進行驗證嗎? –

回答

0

我建議用連字符驗證數字,因爲它似乎是不可能的消耗連字符和使用與他們逆向引用來檢查它們是否已經被匹配之前,使用一些預處理因爲那可能永遠不會發生。

如果你的代碼是在JavaScript中,你可以使用這個:

function validateNumber(str) { 
 
    var re = /^(?=(?!([0-9]+)\1))(?=(?!([0-9])\1{2}[-. ]*\1{3}[-. ]*\1{4}$))\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/gm; 
 
if ((m = re.exec(str.replace(/-/g, ''))) !== null) { 
 
    return true; 
 
} 
 
    return false; 
 
} 
 

 
var case1 = validateNumber('1234512345'); 
 
var case2 = validateNumber('456-784-5678'); 
 
document.getElementById("res").innerHTML = "1234512345: " + case1 + "<br>456-784-5678: " + case2;
<div id="res"/>

+0

我的代碼是在asp.net – Letitia

+0

最主要的是,你不能驗證電話號碼與變量數量的連字符組......你應該使用屏蔽文本框Iin asp.net,並只處理數字的唯一數字。即使我們嘗試爲當前情景創建所有可能的情況,也會非常困難。 –

+0

是的,這就是甚至我認爲 然而與當前正則表達式即^(?=(?!([0-9])\ 1 {2} [ - 。] * \ 1 {3} [ - 。] * \ 1 {4} $))\(([0-9] {3})\)[?? - 。 ]([0-9] {3})[? - 。 ]?([0-9] {4})$ 我只能驗證所有10位數字重複的場景,例如正則表達式將失敗111-111-1111或111.111.1111,但我怎麼也希望像111-111-1789這樣的數字失敗。 不應該有超過7個重複的數字。我如何更新當前的正則表達式 – Letitia