Fork me on GitHub

RegEx正则表达式学习笔记

一、实用的例子


 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中均为 '\\*'

 

 

posted @ 2016-05-16 16:42  郑斌blog  阅读(452)  评论(0编辑  收藏  举报