java中的正则表达式:
1:常见的表示规则:
1 \\ 反斜线字符 (即:\) 2 3 4 字符类 5 [abc] a、b 或 c(简单类) 6 [^abc] 任何字符,除了 a、b 或 c(否定) 7 [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) 8 [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) 9 [a-z&&[def]] d、e 或 f(交集) 10 [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) 11 [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去) 12 13 预定义字符类 14 . 任何字符(与行结束符可能匹配也可能不匹配) \ 转意字符 (\\表示:\,\\.表示:\.即:点本身)15 \d 数字:[0-9] 16 \D 非数字: [^0-9] 17 \s 空白字符:[ \t\n\x0B\f\r] 18 \S 非空白字符:[^\s] 19 \w 单词字符:[a-zA-Z_0-9] 20 \W 非单词字符:[^\w] 21 22 边界匹配器 23 ^ 行的开头 24 $ 行的结尾 25 \b 单词边界 26 \B 非单词边界 27 \A 输入的开头 28 \G 上一个匹配的结尾 29 \Z 输入的结尾,仅用于最后的结束符(如果有的话) 30 \z 输入的结尾 31 32 Greedy 数量词 33 X? X,一次或一次也没有 34 X* X,零次或多次 35 X+ X,一次或多次 36 X{n} X,恰好 n 次 37 X{n,} X,至少 n 次 38 X{n,m} X,至少 n 次,但是不超过 m 次
例子:1:判断是否是手机号是否以13或18开头,满足11位:
1 public class RegexDemo { 2 public static void main(String[] args) { 3 //键盘录入手机号码 4 Scanner sc = new Scanner(System.in); 5 System.out.println("请输入你的手机号码:"); 6 String phone = sc.nextLine(); 7 8 //定义手机号码的规则 9 String regex = "1[38]\\d{9}";10 11 //调用功能,判断即可12 boolean flag = phone.matches(regex);13 14 //输出结果15 System.out.println("flag:"+flag);16 }17 }
2:验证邮箱:
1 /* 2 * 校验邮箱 3 * 4 * 分析: 5 * A:键盘录入邮箱 6 * B:定义邮箱的规则 7 * 1517806580@qq.com 8 * liuyi@163.com 9 * linqingxia@126.com10 * fengqingyang@sina.com.cn11 * fqy@itcast.cn12 * C:调用功能,判断即可13 * D:输出结果14 */15 public class RegexTest {16 public static void main(String[] args) {17 //键盘录入邮箱18 Scanner sc = new Scanner(System.in);19 System.out.println("请输入邮箱:");20 String email = sc.nextLine();21 22 //定义邮箱的规则23 //String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]{2,3})+";24 String regex = "\\w+@\\w{2,6}(\\.\\w{2,3})+";25 26 //调用功能,判断即可27 boolean flag = email.matches(regex);28 29 //输出结果30 System.out.println("flag:"+flag);31 }32 }