【后端】手机号码校验(正则表达式) |
您所在的位置:网站首页 › 自定义正则表达式是什么 › 【后端】手机号码校验(正则表达式) |
一直都是用这个大佬的代码先码上链接 , 我要写带分析的所以要代码的直接点链接跳过去 Java手机号码正则表达式验证_mokeng_zx的博客-CSDN博客_java手机号码正则表达式 文尾附上敷衍式前端代码 【代码】 /** * 手机号码正则 验证手机号码格式 * @param mobile * @return true 说明格式匹配上了 (具体分析见下文) */ public static Boolean isMobile(String mobile) { String regex = "^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[56])|(17[0-8])|(18[0-9])|(19[1589]))\\d{8}$"; Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(mobile); return m.matches(); } 【分析】不是最全的用法就写当下用到的 ▲正则表达式什么意思 ① ^ 以什么开头。 ^1 就是以1开头的意思 $ 以什么结尾。 123$ 就是以123结尾的意思 ② | 或 。a|b 意思就是只要是a或者b就会满足要求了 比如 'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 ③ \d 数字 0到9都可以。如果是\D那就是除了数字0-9以外的 ④ ( ) 就是一部分整体。比如^(123)意思就是必须是123开头 ⑤ { }就是几位的意思。 比如\d{8}就是你写8位而且必须是数字 比如[a-z]{3,6}就是你最少写3位最多写6位且必须都是小写字母 ⑥ [ ] 字符集合。匹配所包含的任意一个字符。注意只能是一个! 比如, '[abc]' 可以匹配 "plain" 中的 'a'。 比如, 热心市民 : HotShimin[ACG] , 那这个市民就可以是HotShiminA或者HotShiminC或者HotShiminG 注意 , 只能指定一位,不能在一个中括号里指定两位,看下面的电话号码正则解析就懂了↓ 【正则解析】^( (13[0-9]) | (14[579]) | (15([0-3] | [5-9])) | (16[56]) | (17[0-8]) | (18[0-9]) | (19[1589]) ) \\d{8} $ ①^() 意思就是必须以这个括号里边的东西开头,至于括号里的是什么 ②这里只举例子,后面同理推就懂了 (13[0-9]) 表示一共以这三位开头 : 1 , 3 , 0~9随便挑一个 (14[579]) 同理,表示145,147,149 (15([0-3] | [5-9]))同理,表示1,5,第三位是0-9内除了4以外都可以 所以可以开头的很多情况↑↑不再一一说明 ③ \\d{8} 表示要写8位数字 ④ $ 表示结尾了 所以一共是 : 前三位指定格式 + 后面8位数字 , 手机号码一共是11位 【代码解析】①为啥String取名叫regex : 因为regex就是正则表达式的意思 ②Pattern类和Matcher类没见过 : 首先中文意思分别是样式(模板) 和 匹配 的意思 如果你要在写Java代码的时候嵌入正则的话就用Pattern和Matcher这两个类 在JDK 1.4中,Java增加了对正则表达式的支持。 java与正则相关的工具主要在java.util.regex包中;此包中主要有两个类:Pattern、Matcher。 下面阐述简单用法三步 ①String regex = "把正则表达式写这里面"; Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);②Pattern类 的构造器私有且自身被final修饰所以是不能new的 , 要通过compile方法来实例化 这一步可以理解为确认好用正则匹配的模板长什么样 + 有什么要求没有(第二个参数) →当前第二个参数的意思是"启用不区分大小写的匹配" , 还有很多点进去源码看去(文末指路) →模板长什么样看第一个参数,用String regex = "把正则表达式写这里面"; ③Matcher类 就是现在你把你要匹配的东西塞进去看下格式符合不,返回的是boolean,行就true Matcher m = p.matcher(mobile); return m.matches(); // 返回boolean值true代表匹配成功用户不是填了个电话吗,注意要用String mobile不要用数字类型因为万一是固话带杠或者括号 这里还有个例子巩固一下 Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); System.out.println(b);// true--------------------- 还没用上的, 用上了我来这里补① \n 换行符 ② \ 单独一个斜杠 : 他本身不能作为一个斜杠, 有意义的,表示将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。 (很复杂的表达总之就是如果你要用反斜杠作为一个字符的话 不能直接写一个反斜杠就算了具体怎么搞看下面) 比如, ① 'n' 匹配字符 "n"。 ② '\n' 匹配一个换行符。 ③序列 '\\' 就是一个反斜杠 ④ "\(" 就是左括号的意思 【拓展】我们在写用户注册表单的时候,只允许用户名包含字符、数字、下划线和连接字符 -,并设置用户名的长度,我们就可以使用以下正则表达式来设定。 所以上面这图啥意思 : 你可以以字母a到z或者数字0到9还有下划线和横杠开头,然后你这个用户名最短要仨字最长只能15位 前端简易代码参考 如果有优化或者更新我会来这里补并标注更新日期 $(function () { $('#_js_loginBtn').click(function () { var val = $('#inputPassword').val(); if (/^1\d{10}$/g.test(val)) { $.get(domainUrl + "/users/checkPhone", {phone:val}, function (data) { /*data : 已注册 , 那么 !data : 没有注册*/ if(!data){ $('#inputPassword').next().text('').hide(); $('.login-box').hide(); $('.signup-box').show(); $("#phone").val(val); }else{ $('#inputPassword').next().text('手机号码已注册.').show() } }) } else { $('#inputPassword').next().text('手机号码格式不正确').show() } });【Pattern和Matcher】 java之Pattern类详解_thlzjfefe的博客-CSDN博客_pattern类 【 \\d 的拓展】 正则表达式“\\d+||(\\d+\\.\\d+”是什么意思_百度知道 【正则表达式字符都是什么意思我忘了】 正则表达式 – 元字符 | 菜鸟教程 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |