2011-04-17 75 views
1

我有一個簡單的AJAX形式,我想驗證它jQuery的驗證電話號碼與正則表達式

  1. 有一個值
  2. 該值是一個10位數

我正嘗試使用RegEx來做到這一點。這是我到目前爲止。

var reg = new RegExp("/[0-9]{10}/"); 
$("#call_form").bind("submit", function() { 
     if ($("#call_number").val().length < 1 && reg.test($("#call_number").val())) { 
       $("#call_error").show(); 
       return false; 
     } 
}); 

我知道這個問題與他的RegExp有關,就好像我刪除了這部分代碼,它驗證了該框有一個值。

編輯:這裏是我使用

var regEx = new RegExp("/[0-9]/"); 

$("#call_form").bind("submit", function() { 

    if ($("#call_number").val().length != 10 && !$("#call_number").val().match(regEx)) { 
     $("#call_error").show(); 
     $.fancybox.resize(); 
     return false; 
    } 
}); 

EDIT 2 這裏使用的建議,最終的正則表達式是什麼,我usign允許空格和破折號是那麼得到的檢查剝離

$("#call_form").bind("submit", function() { 
var Phone = $("#call_number").val().replace(/\D+/g,''); 

if (Phone.length != 10) { 
     $("#call_error").show(); 
     $.fancybox.resize(); 
     return false; 

    } 
}); 
+0

該正則表達式將只檢查,看看是否有字符串中的至少一個數字。你應該保留'{10}'以確保它是全部數字。 – tjameson 2011-04-17 07:59:04

+0

@tjameson好的,如果我保留'{10}',我應該能夠將'length!= 10'丟棄嗎?還是最好不要? – BandonRandon 2011-04-17 08:04:57

+0

是的,但你應該都有。如果正則表達式匹配字符串的任何部分,reg.test將返回true。 – tjameson 2011-04-17 08:06:09

回答

3

你的正則表達式對我來說工作正常......你可以將它縮短到/[0-9]{10}/

你的問題是在這裏:

$("#call_number").val().length < 1。如果數字長度爲10個字符,它永遠不會少於1,否?

你大概意思是這樣的:

$("#call_number").val().length === 10

+0

所以,我結合了兩種答案。 – BandonRandon 2011-04-17 07:55:07

+1

應該是'/^\ d {10} $ /' - 如果你想確保沒有別的東西需要錨點,否則11個數字會通過,所以會有12個字母,10個數字,然後是一些符號 – gnarf 2011-04-17 09:16:54

+0

是的, d更簡單。在對我給他的主題的評論中。 – tjameson 2011-04-17 09:18:04

1

是這樣的:

var regEx = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/; 
$("#call_form").bind("submit", function() { 
     var val = $("#call_number").val(); 
     if (!val.match(regEx)) { 
      $("#call_error").show(); 
      return false; 
     } 
}); 
+0

這個正則表達式更完整,將解析它看起來像破折號。注意,雖然匹配返回一系列匹配。 – tjameson 2011-04-17 07:44:44

+0

我編輯了問題以包含解決方案。我用簡單的正則表達式就意味着沒有空格。 – BandonRandon 2011-04-17 07:55:54

3

沒有人說什麼是錯的你原來的工作 - 這是斜槓(/)。當調用正則表達式作爲構造,你不需要斜槓(這是一個標誌,表示正則表達式litteral),例如:

var re = /\w+/i; 

等同於:

var re = new RegExp('\\w+','i'); 

注你必須爲特殊字符引用反斜槓。

最後一件事 - 允許數字中的空格。您可能在測試或存儲之前刪除它們。用戶發現以3或4位數的塊讀取數字要容易得多,例如,

  • 1234 871 098更容易閱讀比1234871098.
+0

好的趕上!我完全只是讀過它而沒有標記它;;) – gnarf 2011-04-17 09:43:29

2

下面是我用什麼 - 它的簡單,只是發表如果有人搜索相同。

var a = PHONE_FROM_FIELD; 
var filter = /^[0-9-+]+$/; 
if (filter.test(a)) { 
    return true; 
} 
else { 
    return false; 
} 

乾杯!

-1
// check phone number validation 
     function validatePhoneNumber(number) 
     { 
      count=number.length; 
      if(number[0]!=" " && number[0]!="-" && number[count-1]!=" " && number[count-1]!="-") 
      { 
       temp=number.replace(" ", ""); 
       temp=temp.replace("-", ""); 
       if($.isNumeric(temp)) 
       { 
        if(temp.length>=7 && temp.length<=12) 
        { 
         flag=1; 
         for(i=1;i<count;i++) 
         {   
          if(number[i]=="-" || number[i]==" ") 
          { 
           if(number[i-1]=="-" || number[i-1]==" " || number[i+1]=="-" || number[i+1]==" ") 
           { 
            flag=0; 
           } 
          }    
         } 

         if(flag==1) 
         { 
          valid=1; 
         } 
         else 
         { 
          valid=0; 
         } 
        } 
        else 
        { 
         valid=0; 
        } 
       } 
       else 
       { 

        valid=0; 
       } 

      } 
      else 
      { 
       valid=0; 
      } 
      return valid; 
     } 
0
function validate_Phone_Number() { 
    var number = $('field_Id').val(); 
    var filter = /^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/; 
    if (filter.test(number)) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 
+0

它的工作很好..... – 2015-08-04 18:46:32