php中手机号码验证的正则表达式
收藏了二款手机号码验证的代码,一是前台用jquery验证再用后台php代码来验证手机号是否合法,希望对大家有用。
前端代码我使用jquery.validate.js,代码如下:
- <script type="text/javascrip">
- $(document).ready(function() {
- $("#smForm").validate({
- rules: {
- smMobilePhone: {
- required: true,
- digits:true,
- range:[13000000000,18999999999]
- }
- },
- messages: {
- smMobilePhone: {
- required: "您没有填写手机号码",
- digits: "手机号码格式不对",
- range: "手机号长度或者格式不对",
- }
- },
- preErrs : {
- }
- });
- });
- </script>
这只是一个不精确的验证,只能大概验证到一个范围而已,所以重点还在后面。
PHP代码
- $mobilephone=trim($_POST["smMobilePhone"]);
- //手机号码的正则验证
- if(preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/",$mobilephone)){
- //验证通过
- }else{
- //手机号码格式不对
- }
看实例:
- <?php
- //正则表达式
- $tel = "15558530459";//作者的手机号码,如果有疑问可以电话联系我,或者QQ联系我,我的QQ是mezongzi@qq.com
- if(strlen($tel) == "11")
- {
- //上面部分判断长度是不是11位
- $n = preg_match_all("/13[123569]{1}d{8}|15[1235689]d{8}|188d{8}/",$tel,$array);
- /*接下来的正则表达式("/131,132,133,135,136,139开头随后跟着任意的8为数字 '|'(或者的意思)
- * 151,152,153,156,158.159开头的跟着任意的8为数字
- * 或者是188开头的再跟着任意的8为数字,匹配其中的任意一组就通过了
- * /")*/
- var_dump($array); //看看是不是找到了,如果找到了,就会输出电话号码的
- }else
- {
- echo "长度必须是11位";
- }
- /*
- * 虽然看起来复杂点,清楚理解!
- * 如果有更好的,可以贴出来,分享快乐!
- * */
- ?>