正则表达式本质上就是一个用于进行格式验证的字符串,可以使用^开头,使用$结尾,也可以省略不写。
常用的规则
[abc] - 表示可以出现a、b或者c。
[^abc] - 表示可以出现任何字符,除了a、b和c。
[a-zA-Z] - 表示可以出现a-zA-z之间的任何字符,包括两头的字符。
[a-z&&[^bc]] - 表示a-z中除了b,c外的任何字符
. - 表示可以出现任何字符。
\d - 表示可以出现任何数字,相当于[0-9]。
\D - 表示可以出现任何非数字,相当于[^0-9]。
\s - 表示可以出现任何空白字符,相当于[ \t\n\x0B\f\r]。
\S - 表示可以出现任何非空白字符,相当于[^\s]。
\w - 表示可以出现任何单词字符,相当于[a-zA-Z_0-9]。
\W - 表示可以出现任何非单词字符:[^\w]。
X? - 表示X可以出现一次或一次也没有,也就是0 ~ 1次。
X* - 表示X可以出现零次或多次,也就是0 ~ n次。
X+ - 表示X可以出现一次或多次,也就是1 ~ n次。
X{n} - 表示X可以出现恰好 n 次。
X{n,} - 表示X可以出现至少 n 次,也就是>=n次。
X{n,m} - 表示X为n<=x<=m。
正则表达式有关的方法
boolean matches(String regex) - 用于判断当前字符串是否满足参数指定的规则。
String[] split(String regex) - 用于按照参数指定的规则来进行字符串的拆分。
String replaceAll(String regex, String replacement) - 用于按照regex指定的规则来进行字符串的替换。
代码实现
Scanner sc = new Scanner(System.in);
String reg = "^\\w{1,}[@]{1}\\w{2,}(.com|.cn|com.cn|.gov|.gov.cn|.org|.org.cn)$";
while(true){
System.out.println("请输入邮箱:");
String str = sc.next();
if(str.matches(reg)){ //调用字符串中的正则表达式方法matches()
System.out.println("输入正确");
break;
}else{
System.out.println("输入错误,请重新输入:");
}
}