`
yysct2005
  • 浏览: 87574 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java 正则表达式全攻略(八)

    博客分类:
  • java
阅读更多

Java 正则表达式全攻略(八)

[ 2010-04-23 12:48:13.0 | 作者: 随想 类别: 基础强化 ] 来源:网络收集     浏览 1712
labels:Java 正则表达式全攻略(八) java正则表达式 正则注释

注释

正则表达式大多都是苦涩难读的,因此我们需要在表达式中添加注释,来增强表达式的可读性。Java 正则的注释以“#”开始,回车结束,而且默认是不开启的。我们可以看看下面的例子:

   1:


 String regex =  "(19|20)\\d\\d[- /.]#年,只允许是19或20开头的\n
"
 +

   2:


                 "(0?[1-9]|1[012])[- /.]#月,只允许1-12\n
"
 +

   3:


                 "(0?[1-9]|[12][0-9]|3[01])#日,只允许1到31
"
;

   4:


 Pattern p = Pattern.compile(regex, Pattern.COMMENTS);

   5:


 Matcher m = p.matcher("2010.2.21"
);

   6:


 assertThat(m.matches(), is(true));

   7:


 m = p.matcher("1879.1.8"
);

   8:


 assertThat(m.matches(), is(false));

   9:


 m = p.matcher("2010.13.21"
);

  10:


 assertThat(m.matches(), is(false));

  11:


 m = p.matcher("2010.2.32"
);

  12:


 assertThat(m.matches(), is(false));

这样看起来是不是比较清晰呢?

其他

常用的表达式

  1. Email
    ^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$
  2. 十六进制值
    ^#?([a-f0-9]{6}|[a-f0-9]{3})$
  3. URL
    ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
  4. 年-月-日
    ^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$
  5. IP地址
    ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
  6. HTML标签
    ^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$
  7. 中文字符
    [\u4e00-\u9fa5]
  8. 双字节字符(包括汉字在内)
    [^\x00-\xff]
  9. 国内电话号码
    ^(\d{3}-|\d{4}-)?(\d{8}|\d{7})?$
  10. 腾讯QQ号
    ^[1-9]*[1-9][0-9]*$

其他资源

  1. http://regexlib.com/
    强烈推荐的一个网站,想找正则表达式,直接在上面查就可以了
  2. http://www.regular-expressions.info/
    经典的正则表达式教程,国内大部分正则教程的源头,可惜就是E文的
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics