通过手机号验证的正则表达式来学习正则表达式的基础知识

前提知识:

正则表达式:描述字符模式的对象

正则表达式直接量语法:包含在一对斜杠(/)之间的字符,例如:

    var reg = /\d/;

正题:

在论坛里找了篇关于手机号的正则表达式的文章,发现里面的正则表达式是错的微笑,好吧,只能自立更生写一下了。

先上一下验证手机号的正则表达式:

 /^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|147)\d{8}$/g

真实应用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" placeholder="请输入手机号" id="ipt2">
<script>
   var oIpt2 = document.getElementById("ipt2");
   oIpt2.onblur = function () {
       var valueStr = oIpt2.value;
       var reg1 = /^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|147)\d{8}$/g;
       if(reg1.test(valueStr)){
           alert("输入正确")
       }else{
           alert("输入错误")
       }
   }
</script>
</body>
</html>

实现思路:

1 ⼿机号需要满⾜11位数字
2 通常以 13[0-9] | 14[5|7] | 15[0|1|2|3|5|6|7|8|9] | 17[1 | 7] | 18[0-9] 等开头
3 必须以数字结尾

知识点:

1.修饰符,上述正则表达式中的“g”是一个修饰符,说明模式匹配应该是全局的;match方法,如果传入的正则使用全局匹配,那么返回的值是一个整体正则表达式匹配的结果,不会返回子项匹配的结果。

2.字符“|”用于分割供选择的字符,想当于或;

3.^位置不同,代表的意义不同,[^...]表示不再方框好内的任意字符 ,^匹配字符串的开头。

4.(),正则表达式中括号的作用有 1)把单独的项组合成子表达式 2)在完整的模式中定义子表达式 3)允许在同一正则表达式的后部应用前面的子表达式

5.[],将直接量字符单独放进方括号内就组成了字符类,一个字符类可以匹配它所包含的任意字符。

6.{},重复,{n,m} 匹配前一项至少n次,但不能超过m次;{n,}匹配前一项n次或者更多次;{n} 匹配前一项n次。

7.\d 任意ASCⅡ数字,等价于[0-9]。

8.$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾。

阅读更多
个人分类: 前端
上一篇字符串方法:indexOf与lastIndexOf的区别
下一篇JavaScript打字机效果实现--让页面自己边打代码边实现代码
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭