王一麟 發表於 2022-2-23 15:48:22

最新最全的手机号验证正则表达式

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前言</a></li><li><a href="#_label1">各大运营商手机号码段(新)</a></li><li><a href="#_label2">表单字段验证常用正则表达式</a></li><li><a href="#_label3">总结</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>前言</h2>
<p>一般表单页面都需要填写手机号,校验用户输入的手机号码是否正确,就要用到正则表达式,用正则表达式来匹配手机号段,如在运营商号段内,则号码正确。因此,需要知道运营商最新的号段,如下所示:</p>
<p class="maodian"><a name="_label1"></a></p><h2>各大运营商手机号码段(新)</h2>
<p>中国电信号段</p>
<blockquote><p>133、153、173、177、180、181、189、190、191、193、199</p></blockquote>
<p>中国联通号段</p>
<blockquote><p>130、131、132、145、155、156、166、167、171、175、176、185、186、196</p></blockquote>
<p>中国移动号段</p>
<blockquote><p>134(0-8)、135、136、137、138、139、1440、147、148、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198</p></blockquote>
<p>中国广电号段</p>
<blockquote><p>192</p></blockquote>
<p>其他号段</p>
<blockquote><p>14号段部分为上网卡专属号段:中国联通145,中国移动147,中国电信149</p></blockquote>
<p>虚拟运营商:</p>
<blockquote><p>电信:1700、1701、1702、162<br />移动:1703、1705、1706、165<br />联通:1704、1707、1708、1709、171、167<br />卫星通信:1349、174<br />物联网:140、141、144、146、148</p></blockquote>
<p>通过以上号段可以看出,手机号码起始1,第二位是3456789中的任意一个,第三位有的是0-9全段,有的只是部分,如下:</p>
<p>13和18开头的手机号是全段</p>
<blockquote><p>13开头的手机号是全段:13 比如130,131,132&hellip;139<br />18开头的手机号是全段:18 比如180,181,182&hellip;189</p></blockquote>
<p>15和19开头的手机号后面除4外都有,无154和194</p>
<blockquote><p>15 比如150,151,152,153,155&hellip;159<br />19 比如190,191,192,193,195&hellip;159</p></blockquote>
<p>17开头的手机号后面除9外都有</p>
<blockquote><p>17 比如170,171,172,173&hellip;178</p></blockquote>
<p>14开头的手机号除2,3外都有,无142和143</p>
<blockquote><p>14 比如140,141,144,145&hellip;149</p></blockquote>
<p>16开头的手机号后面只有2567</p>
<blockquote><p>16 比如:162,165,166,167</p></blockquote>
<p>了解了运营商的最新号段,下面就写出手机号验证的最新正则表达式:</p>
<div class="jb51code"><pre class="brush:js;">/^(13|14|15|16|17|18|19)\d{8}$/
</pre></div>
<p>在javascript中的示例:</p>
<div class="jb51code"><pre class="brush:js;">&lt;script&gt;
        var reg_user = /^[\u4e00-\u9fa5]{2,4}$/;    //2-4个中文字符正则
        var reg_tel = /^(13|14|15|16|17|18|19)\d{8}$/;    //11位手机号码正则
        function checkSubmit() {
                if (document.form.user.value =="") {
                        alert("姓名不能为空!");
                        document.form.user.focus();
                        return false;
                } else if (!reg_user.test(document.form.user.value)) {
                        alert("姓名只能为2-4中文!");
                        document.form.user.focus();
                        document.form.user.select();
                        return false;
                }
                if (document.form.tel.value =="") {
                        alert("请填写您的手机号码!");
                        document.form.tel.focus();
                        document.form.tel.select();
                        return false;
                } else if (!reg_tel.test(document.form.tel.value)) {
                        alert("请正确填写您的手机号码!");
                        document.form.tel.focus();
                        document.form.tel.select();
                        return false;
                }
        }
&lt;/script&gt;
</pre></div>
<p>因为手机号都是以1开始的,所以也可以这样写:</p>
<div class="jb51code"><pre class="brush:js;">/^1(3|4|5|6|7|8|9)\d{8}$/
</pre></div>
<p>这是把所有运营商号段写在一起的,包括虚拟运营商、物联网等,大家也可以根据项目需求来写。</p>
<p class="maodian"><a name="_label2"></a></p><h2>表单字段验证常用正则表达式</h2>
<p>1、姓名</p>
<div class="jb51code"><pre class="brush:js;">/^[\u4e00-\u9fa5]{2,4}$/    //2-4个中文字符正则
</pre></div>
<p>2、手机号码</p>
<div class="jb51code"><pre class="brush:js;">/^(13|14|15|16|17|18|19)\d{8}$/
</pre></div>
<p>3、座机号码</p>
<div class="jb51code"><pre class="brush:js;">/^(0\d{2,3})-?(\d{7,8})$/
</pre></div>
<p>4、电子邮箱</p>
<div class="jb51code"><pre class="brush:js;">/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
</pre></div>
<p>5、身份证号码</p>
<p>(1)普通校验</p>
<div class="jb51code"><pre class="brush:js;">/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
</pre></div>
<p>(2)精准校验</p>
<p>18位</p>
<div class="jb51code"><pre class="brush:js;"> /^\d{5}(19|20)\d{2}((0)|(1))(()|10|20|30|31)\d{3}$/
</pre></div>
<p>15位</p>
<div class="jb51code"><pre class="brush:js;">/^\d{5}\d{2}((0)|(1))(()|10|20|30|31)\d{2}$/
</pre></div>
<p>后6位</p>
<div class="jb51code"><pre class="brush:js;"> /^(()|10|20|30|31)\d{3}$/
</pre></div>
<p>6、QQ号码</p>
<div class="jb51code"><pre class="brush:js;">/^\d{4,9}$/
</pre></div>
<p>7、邮政编码</p>
<div class="jb51code"><pre class="brush:js;">/^\d{5}$/
</pre></div>
<p>8、注册账号</p>
<div class="jb51code"><pre class="brush:js;">/^{4,15}$/
</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>总结</h2>
頁: [1]
查看完整版本: 最新最全的手机号验证正则表达式