2013-02-07 32 views
0

誰能給我的正則表達式驗證號碼是定製電話號碼的正則表達式?

  1. 分鐘6或最多15個位數
  2. 可以包含(),-,#(如果存在則僅在首位,隨後數),/,+

例如。

(079) 22861851 
(079)22861851 
079 22861851 
22861851 
079-26408300/8200 
079 264 083 00 
9429527462 
+919427957462 
#9427957462 

我想這一切以上的數字驗證真正的一個正則表達式公式..任何人都可以幫助我。

我已經嘗試了本

var phone_patternIndia = /^((\+){0,1}91(\s){0,1}(\-){0,1}(\s){0,1}){0,1}\d{2}(\s){0,1}(\-){0,1}(\s){0,1}[1-9]{1}[0-9]{7}$/; 


var phone_patternUsa=/^([0-9](|-)?)?(\(?[0-9]{3}\)?|[0-9]{3})(|-)?([0-9]{3}(|-)?[0-9]{4}|[a-zA-Z0-9]{7})$/; 

var phone_patternUsa1=/^[\\(]{0,1}([0-9]){3}[\\)]{0,1}[ ]?([^0-1]){1}([0-9]){2}[ ]?[-]?[ ]?([0-9]){4}[ ]*((x){0,1}([0-9]){1,5}){0,1}$/; 

但它不工作的所有的時間..所以決定去與其他模式..

VAR phone_pattern =/^((\ d {3} - ? |(\ d {3}))\ S * \ d {7}($ | \ S */\ S * \ d {4} $)| \ d {3} \ S \ d {3} \ S \ d {3} \ S \ d {2} | + \ d {12} |#\ d {10})$ /;

if (phone_pattern.test(personal_phone)) 
     { 

      $("#restErrorpersonalphone").html(''); 
      $("#personal_phone").removeClass('borderColor'); 

     } else { 
      $("#restErrorpersonalphone").html('Please enter valid phone number'); 
      $("#personal_phone").addClass('borderColor'); 
      flag = false; 
     } 

它總是會在其他條件

+1

你不提'+'或'/'您在任何規則,但他們似乎是有 –

+0

已經編輯我的問題...請參閱... –

+0

如果u不想幫我,然後請不要atleast放棄vote.i已經嘗試過的東西..如果你可以直接給我投票??我知道你的人是專家..我在這個正則表達式新的多數民衆贊成在這個問y ..如果我知道所有然後我不需要在這裏發佈問題 –

回答

1

您最容易解決問題的方法是消除所有非數字並僅使用數字的長度進行驗證。

var digits=personal_phone.replace(/[^0-9]/g,''); 
var isValid=false; 
if (digits && digits.length>=10) { 
    // You can fine-tune whether it starts with 1, matches an area code, etc here 
    isValid=true; 
} 
+0

作爲一個方面說明,將格式化考慮爲演示文稿是有幫助的。只驗證值而不是格式,並對值進行規範化以在演示期間應用一致的格式(想想具有相同或不同格式的數字列表)。考慮你的用戶可能會將(916)555-4321或916.555.4321剪切並粘貼到你的應用中。兩者都是有效的,但如果你對格式有限制,一個用戶就不會有那麼流暢的體驗。 – phatfingers

+0

thanx ///我應該與年解決方案 –

2

我強烈鼓勵打破這種成更小的正則表達式和單獨測試每一個,否則剝出字符,然後測試,但我的頭只是一個粗略的樣品從頂一下,應該幫助你的問題(未測試,只涵蓋了你所使用的例子)...

(079) 22861851 => /^(\d{3}-?|\(\d{3}\))?\s*\d{7}(\s*\/\s*\d{4})?$/ 
(079)22861851 => same... 
079 22861851 => same... 
22861851  => same... 
079-26408300/8200 => same... 
079 264 083 00 => /^\d{3}\s\d{3}\s\d{3}\s\d{2}$/ 
9429527462  => same as first regex 
+919427957462 => \^\+\d{12}$/ 
#9427957462 => /^#\d{10}$/ 

所以,只要將它們結合起來......

/^(\d{3}-?|\(\d{3}\))?\s*\d{7}($|\s*\/\s*\d{4}$)|\d{3}\s\d{3}\s\d{3}\s\d{2}|\+\d{12}|#\d{10})$/ 
+0

thanx for yr answer..its不工作請看我更新的問題已經發布了什麼我已經把我的代碼放在你說的。 –

+0

np。對不起。我會測試它,但我必須工作。讓我們看看失敗的那個,並從那裏縮小它的範圍。哪些字符串不能正確執行檢查?你期望哪個正則表達式,但不捕獲這個模式? – kikuchiyo

+0

+ 919427957462,#94279574622這隻適用於.. –