正则基础语法(死记硬背)
类 Pattern中 jdk文档有详细说明
字符 | 分组 | 其他 |
---|---|---|
^ 正则开始 | (a|b) a或者b | | 或 |
$ 正则结束 | . 任意字符 | && 与 |
x 字符x | [abc] a或者b或者c | () |
\t \n \f \r 制表符 换行符之类 | [^abc] 非[abc] | 1 |
\w 字母数字下划线 | [a-zA-Z] a-z或者A-Z | 1 |
\W 非\w | ? {0,1}次 | 1 |
\d [0-9] | + {1,}次 | 1 |
\D 非\d | * {0,}次 | 1 |
\s 空白字符 | {n} n次 | 1 |
\S 非\s | {n,} 至少n次 | 1 |
java入门正则练习
// 验证一个字符是否是数字(整数或者小数)
String s = "123.1";
System.out.println(s +"(整数或者小数验证):" + s.matches("^(\\d+(\\.\\d+)?)$"));
//验证IPV4地址 192.168.1.1
s = "192.168.1.001";
System.out.println(s +"(简单IPV4验证):" + s.matches("^((\\d{1,3}\\.){3}\\d{1,3})$"));
//邮箱验证
s = "zxw@cc.email"; //只要是大概的格式就可以
System.out.println( s +"(邮箱简单验证):" + s.matches("^(\\w+@\\w+.\\w+)$"));
s = "z_w1123x@cc.com.cn";//邮箱格式,只能字母开头和结尾,全文只有字母数字下划线,后缀只能是.com .cn .new .com.cn 用户名长度限制30
System.out.println( s +"(邮箱复杂验证):" + s.matches("^([a-zA-Z]\\w{0,28}[a-zA-Z]@\\w+((.com)|(.cn)|(.net)|(.com.cn)))$"));
java对正则的支持
在java.util.regex正则包中,只有两个类
Pattern类:用于编译正则
Matcher类 用于匹配
String中的matches方法就是调用的reg包中的方法
public static boolean matches(String regex, CharSequence input) {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
return m.matches();
}