电话号码验证
-
要求
- 固定电话:如果有区号,那么区号可以是3位或者4位,首位必须是0,电话号码为7位到8位,区号与电话号码之间用“-”连接,如果没有区号,电话号码为7位到8位。
- 移动电话:11位,第一第二位为“13”,“15”,“18”三者之一。
-
我的思路
- 先求不含区号的固定电话正则表达式:\d{7,8}
- 再求含区号的:0\d{2,3}-\d{7,8}
- 移动的:1[358]\d{9}
- 最后把他们用或连接:(\d{7,8})|(0\d{2,3}-\d{7,8})|(1[358]\d{9})
过程中我以为表示或需要转义,使用的是\|,导致验证出错,这里再次提醒自己,|表示“或”的意思,\|单纯得表示“|”字符,没有特殊含义。
-
验证
package regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Telephone { public static void main(String[] args){ //需要验证的手机号 String tel="12631721765"; //正则表达式 String reg ="(0\\d{2,3}-\\d{7,8})|(\\d{7,8})|(1[358]\\d{9})" ; //编译正则表达式 Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(tel); // 字符串是否与正则表达式相匹配 boolean rs = matcher.matches(); System.out.println(rs); } }
邮箱验证
- 要求
- 用户名:字母、数字、中划线、下划线组成
- @
- 网址:字母、数字组成
- 小数点:.
- 组织域名:2-4位字母组成
-
我的思路
这个邮箱的话直接匹配,就是一条条规则去满足,用户名:[\w-]+,到@:[\w-]+@,到网址:[\w-]+@[A-Za-z0-9]+,到小数点,这里小数点和组织域名应该看成一个组合,因为有的会有.org.cn这样两组的,所以到小数点和组织域名:[\w-]+@[A-Za-z0-9]+(\.[A-Za-z]{2,4}){1,2}
-
验证
可以采用专门的正则表达式的软件工具验证,也可以用我上面那段代码验证
——刚学完一些语法写的,验证了几组数据都能达到要求,有漏洞欢迎指正!
常用正则表达式
如有建议欢迎指教,可以到我的博客上与我交流,这里的评论更难及时接收。