前提知识:
正则表达式:描述字符模式的对象
正则表达式直接量语法:包含在一对斜杠(/)之间的字符,例如:
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.$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾。