1.正则表达式
正则表达式是从左到右一个一个去匹配的
内部的方括号表示"或", &&表示且
Java中"\"反斜杠是转义字符, 所以在使用\d时要写成\\d, 以免将d转义.
Java中\\表示\, 两个杠表示一个杠
2.练习
2.1简单练习
心得 : 书写正则表达式时, 拿着一个正确的数据, 从左到右依次去写.
在正则表达式中, \\表示转义字符, \会报错. 比如 :
单 . 表示任意字符
\. 会报错
\\. 表示 . 字符
注意 : ()表示一组, 可以下载any-rule插件, 包含许多常见的正则表达式, 右键字符串就可以使用.
// 利用正则表达式验证是否满足要求
// 验证手机号(11位, 1开头)
Scanner scanner = new Scanner(System.in);
System.out.println("请输入手机号:");
String phonenumber = scanner.next();
boolean pmatches = phonenumber.matches("[1]\\d{10}");
System.out.println(pmatches);
// 验证座机号(至少8位, 0开头, 包括-)
System.out.println("请输入座机号:");
String number = scanner.next();
boolean nmatches = number.matches("[0]\\d{2,3}-?[1-9]\\d{4,9}");
System.out.println(nmatches);
// 验证邮箱号(数字字母至少7位, @, 数字字母至少2位, (.c, omn)一或两次)
System.out.println("请输入邮箱号:");
String emailnumber = scanner.next();
boolean ematches = emailnumber.matches("\\w{7,}@[\\w&&[^-]]{2,}([.][c][omn]{1,3})+");
System.out.println(ematches);
2.2复杂练习
注意 : ()代表一组, 里面可以用 | 表示或, 但是 | 前后不能加空格, 否则会验证失败.
(?i)abc, 表示忽略abc的大小写, AbC, abC, aBc, 都可以识别成功.
// 验证用户名
System.out.println("请输入用户名:");
String username = scanner.next();
System.out.println(username.matches("\\w{4,16}"));
// 验证身份证号码
System.out.println("请输入身份证号码:");
String idcard = scanner.next();
System.out.println(idcard.matches("[1-9]\\d{5}([1][9]\\d{2}|[2][0]([01]\\d|[2][0123]))" +
"([0][1-9]|[1][012])([0][1-9]|[1]\\d|[2]\\d|[3][01])\\d{3}(\\d|(?i)x)"));