正则表达式:用来判断用户输入的内容是否符合格式的要求,严格区分大小写。
String str = ""
[]允许出现的内容,可以简写,但必须连续,[0123456789]→[0-9],[a-z]
{}允许出现的长度,不写默认为1
例1:①[0-9]{4} 0000-9999之间的数 允许出现4位,并且每位内容为0-9中的一位
②[0123456789]{4} 与①式等价
例2:[abc][123]
表示两位,
第一位在a,b,c中取任意一个,
第二位取1,2,3中的任意一个,
可能为a1,a2,a3,b1,b2,b3,c1,c2,c3
正则表达式 中 符号 的实意
^ 取反, 例[0-9]取一位0-9的字符,[^0-9]取一位不在0-9中的字符
? 出现0-1次, [123]? 只能出现1或2或3或空白
* 出现0或多次, [abc]* 可以是由a,b,c字符组成的任意长度的串,a,b,c,ab,ac,acabcba等等,包含空白
+ 出现的次数>=1, [abc]+ 和*的用法一样,但不包含空串
. 匹配 单个 任意字符
\s 只含空白
\d 数字与[0-9]等价
\w 字母数字下划线[0-9a-zA-Z]
大写即取反
\S 不含空白
\D 不含数字与[^0-9]与等价
\W 不含字母数字下划线,可以为!@#$%^&这些
实际使用时需要注意
JAVA中'\'为转义字符,故使用如下的格式
String str="\\w";
String str="\\s";
例:手机号,首位必为1,第二位不为0,1,2,剩余9位可为0-9的数
String phone = "[1][3-9][0-9]{10}"
例:身份证号,18位,前17位为数字,最后一位可为X
String ID = "[0-9]{17}[0-9X]"
例:验证码,包含字母数字,长度为4
String code = "[0-9a-zA-Z]{4}"
代码验证:
public class TestRegex {
public static void main(String[] args) {
String str = "[1][3-9][0-9]{9}";
String input;
do {
System.out.println("请输入");
input = new Scanner(System.in).nextLine();
if(input.matches(str)) {
System.out.println("满足");
return;
}
}while(!input.matches(str));
}
}