一、实用的例子
1 public static void main(String[] args) { 2 // 简单练习 3 System.out.println("-123".matches("-?\\d+")); 4 System.out.println("+5678".matches("(-|\\+)?\\d+")); 5 // QQ号 6 System.out.println("174678839431".matches("\\d{5,12}")); 7 8 // 固定电话号码 9 System.out.println("010 88886666".matches("\\(?0\\d{2}[) -]?\\d{8}"));10 System.out.println("010-88886666".matches("\\(?0\\d{2}[) -]?\\d{8}"));11 System.out.println("(010)88886666".matches("\\(?0\\d{2}[) -]?\\d{8}"));12 13 // 数字或字母(长度限制8-12)14 System.out.println("zhengbin123".matches("^[a-zA-Z0-9]{8,12}$"));15 16 // 符合规则的IP地址17 System.out.println("8.8.8.256".matches("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?).){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"));18 19 // 只能输入汉字20 System.out.println("郑州的文武".matches("^[^\\w^!@#$%^&*(){}\\\\|~`,./';:;‘,。、~·!(【】)《》<>’]{2,4}$"));21 }
二、表达式使用规则表
字符
B | 指定字符B |
\xhh | 十六进制值为oxhh的字符 |
\uhhhh | 十六进制表示为oxhhhh的Unicode字符 |
\t | 制表符Tab |
\n | 换行符 |
\r | 回车 |
\f | 换页 |
\e | 转义(Escape) |
字符类
. | 任意字符 |
[abc] | 包含a、b和c的任何字符(和a|b|c作用相同) |
[^abc] | 除了a、b和c之外的任何字符(否定) |
[a-zA-Z] | 从a到z或从A到Z的任何字符(范围) |
[abc[hij]] | 任意a、b、c、h、i和j字符(与a|b|c|h|i|j作用相同)(合并) |
[a-z&&[hij]] | 任意h、i或j(交) |
\s | 空白符(空格、tab、换行、换页和回车) |
\S | 非空白符([^\s]) |
\d | 数字[0-9] |
\D | 非数字[^0-9] |
\w | 词字符[a-zA-Z0-9] |
\W | 非词字符[^\w] |
逻辑操作符
XY | Y跟在X后面 |
X|Y | X或Y |
(X) | 捕获组。可以在表达式中用\i引用第i和捕获组 |
边界匹配符
^ | 一行的起始 |
$ | 一行的结束 |
\b | 词的边界 |
\B | 非词的边界 |
\G | 前一个匹配的结束 |
三、注意
Java中插入一个普通的反斜线,应为'\\\\'
以上表格中 '\*' 在Java中均为 '\\*'