举例来说,连续相同的3位数字的正则表达式的标准语法是:
([\d])\1{2}
但是如果在java代码中这么写,就会出现语法错误,如下:
String regEx = "([\d])\1{2}";
考虑到\符号在java字符串的语法中属于转义符,所以,需要的java的语法是:
String regEx = "([\\d])\\1{2}";
为了加深印象,再来看下一个例子:前面连续相同的3位数字,后面连续相同的三位字符的正则表达式的标准语法是:
(\d)\1{2}(.)\2{2}
而在java中,是这么写的:
String regEx = "(\\d)\\1{2}(.)\\2{2}";
注意,\1和\2指的是patten的位置。
最后给出整段测试代码:
@Test
public void test02(){
// 要验证的字符串
String str = "111";
// 正则表达式规则
String regEx = "([\\d])\\1{2}";
//String regEx = "([\d])\1{2}";
// 编译正则表达式
Pattern pattern = Pattern.compile(regEx);
// 忽略大小写的写法
// Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
// 查找字符串中是否有匹配正则表达式的字符/字符串
boolean rs = matcher.find();
System.out.println(rs);
}
本文基于
Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名
http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。