一、导读
本文着重讲解一些常用的正则表达式验证,如
验证邮箱
,身份证号
,手机号
等等…好文章 记得 收藏+点赞+关注 !!!
二、常用的正则表达式
- 验证Email地址:
“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
- 验证InternetURL:
“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
- 验证电话号码:
“^((d{3,4})|d{3,4}-)?d{7,8}$”
- 验证身份证号(15位或18位数字):
“^d{15}|d{}18$”
- 验证一年的12个月:
“^(0?[1-9]|1[0-2])$”
正确格式为:“01”-“09”和“1”“12” - 验证一个月的31天:
“^((0?[1-9])|((1|2)[0-9])|30|31)$”
- 匹配中文字符的正则表达式:
[u4e00-u9fa5]
- 匹配双字节字符(包括汉字在内):
[^x00-xff]
- 匹配空行的正则表达式:
n[s| ]*r
- 匹配HTML标记的正则表达式:
/< (.*)>.*|< (.*) />/
- 匹配首尾空格的正则表达式:
(^s*)|(s*$)
- 匹配Email地址的正则表达式:
w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
- 匹配网址URL的正则表达式:
http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
三、一些小练习
/**
* 正则表达式练习
*
* @author JiaMing
* @since 2021/9/18/0018 下午 17:19
**/
public class RegexTest {
public static void main(String[] args) {
//使用正则表达式判断输入的手机号是否符合规则
System.out.println("请输入一个手机号");
Scanner sc = new Scanner(System.in);
String tel = sc.nextLine();
//定义手机号规则
String regex = "1[3589]\\d{9}";
boolean matches = tel.matches(regex);
System.out.println(matches ? "输入的手机号格式正确" : "输入的手机号格式错误");
System.out.println("————————————————————————————————————————");
//使用正则表达式判断邮箱是否符合规则
//定义邮箱规则
String regex2 = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
String email = "JiaMing1027@qq.com";
boolean b = email.matches(regex2);
System.out.println("邮箱->" + email + " 是否符合规则:" + b);
System.out.println("————————————————————————————————————————");
//使用正则表达式判断身份证号是否符合规则
//定义身份证号规则(包括15位和18位身份证号)
String regex3 = "(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))" +
"(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])" +
"|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}$)";
//测试身份证号(随意输入的)
String id = "230203199711270616";
boolean b1 = id.matches(regex3);
System.out.println("身份证号->" + id + " 是否符合规则:" + b1);
System.out.println("————————————————————————————————————————");
//使用正则表达式查找字符串中超链接标签的地址
String str = "<a href=\"https://baidu.com\" >百度一下</a>";
Pattern pattern = Pattern.compile("(?<=(href=\\\")).*?(?=\\\")");
Matcher matcher = pattern.matcher(str);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
sb.append(matcher.group());
sb.append("\r\n");
}
System.out.println(sb);
System.out.println("—————————————————————————————————————");
//测试分割功能
String age = "18-24";
String regex1 = "-";
String[] s = age.split(regex1);
int startAge = Integer.parseInt(s[0]);
int endAge = Integer.parseInt(s[1]);
System.out.println("请输入一个年龄");
Scanner sc1 = new Scanner(System.in);
int a = sc1.nextInt();
if (a < startAge || a > endAge) {
System.out.println("年龄不合适");
} else {
System.out.println("ok");
}
赶紧去IDEA敲一敲吧!
推荐阅读:
推荐一个学java很好的网站:
http://www.java265.com/