手機號碼驗證方法(正則驗證)

懷特然後發表於2022-03-14

只允許輸入數字

<xsl:attribute name="onkeyup">value=value.replace(/[^\d]/g,'')</xsl:attribute>
<xsl:attribute name="onbeforepaste">clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))</xsl:attribute>
//固定電話只要有一個填寫即可
$('.form-inline').submit(function(){
    var m = $('input[name=mobile]').val();
    var p = $('input[name=phone]').val();
    var reg = /^1\d{10}$/;
    if((m == "" || !reg.test(m)) && p == ""){
      $('input[name=mobile]').addClass('error_color');
      $('input[name=mobile]').tooltip('show');
      return false;
    }else{
      $('input[name=mobile]').removeClass('error_color');
      $('input[name=mobile]').tooltip('hide');
      return true; 
    }
  })

下面看下最新手機號碼驗證正規表示式

由於手機號段的不斷更新,以前的正規表示式已經無法滿足需求。重新編寫這條表示式,號段資料來源依據:

現有手機號段:

移動:139   138   137   136   135   134   147   150   151   152   157   158    159   178  182   183   184   187   188 
聯通:130   131   132   155   156   185   186   145   176 
電信:133   153   177   173   180   181   189

虛擬運營商:

170  171

整理後:

130~139  145,147 15[012356789] 178,176,177,173,170,171 180~189

var regex = {
  mobile: /^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/
}

js:

var bool = checkRegexp(jq("#mobile"), /^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/, "電話格式不對");

表示式分析:

“/”代表一個正規表示式。

“^”代表字串的開始位置,“$”代表字串的結束位置。

“?”代表匹配前面的字元一個或零個,所以這裡0?的意思是手機號碼可以以0開頭或不以0開頭。

接下的部分驗證11位的手機號碼,先從13開始,因為從130-139都有所以可選區間是[0-9],15開頭的號碼沒有154所以[]裡面沒有4這個數字,當然也可以寫成[0-35-9],下面18和14開的號碼同上。

小括號括起來的代表一個子表示式,裡面是4個可選分支分別用“|”來區分開來,在正則中“|”的優先順序是最低的,這裡每個分支匹配的都是3個字元(一個[]只能匹配一個字元,裡面是可選的意思),也就是手機號碼的前3位數字,那麼後面還有8位數字需要匹配,可以是0-9的任意字元,所以是“[0-9]{8}”,{}中的數字代表匹配前面字元的個數。

分析完畢。

如果有大頭鬼在前面寫上86,17951之類的呢?

/^(0|86|17951)?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/

C#版:

using System.Text.RegularExpressions;
    public static bool IsTelephone(string str_telephone)
    {
      return Regex.IsMatch(str_telephone, @"^(0|86|17951)?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$");
    }
1
2
3
4
5
using System.Text.RegularExpressions;
     public static bool IsTelephone( string str_telephone)
     {
       return Regex.IsMatch(str_telephone, @"^(0|86|17951)?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$" );
     }

以上所述是小編給大家介紹的手機號碼驗證方法(正則驗證),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015107/viewspace-2870907/,如需轉載,請註明出處,否則將追究法律責任。

相關文章