首頁 > web前端 > js教程 > 主體

正規驗證手機號碼的詳解(附代碼)

php中世界最好的语言
發布: 2018-03-29 17:54:23
原創
1904 人瀏覽過

這次帶給大家正規驗證手機號碼的詳解(附代碼),正則驗證手機號碼的注意事項有哪些,以下就是實戰案例,一起來看一下。

只允許輸入數字

<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; 
    }
  })
登入後複製

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

由於手機號段的不斷更新,先前的正規表示式已經無法滿足需求。重新寫這個表達式,號段資料來源依據:http://www.jihaoba.com/tools/haoduan/

現有手機號碼段:

# #移動:139   138   137   136   135   134   147   150   151   183   184   187   188 

連結:130   131   132   155   156   185  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}$");
    }
登入後複製
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

使用正規表示式擷取字串詳解(附程式碼)

使用正規表示式在js裡怎麼查找字母與數字

####

以上是正規驗證手機號碼的詳解(附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!