常用正则表达式【转载】
原文地址:常用正则表达式【转载】
作者:向阳的围脖2010
第一部分:规则说明 /A匹配缓冲区的起始点; /Z匹配缓冲区的结束点;关于它们的使用,详细参见代码。 /d表示数字,/d{3}表示一个三位数的数字,{}表示约束运算符(bound operator),表示要重复3次;和//d//d//d的效果一样; 重复符+:表示前面的表达式可以重复,但是必须至少重复一次;比如:[a-zA-Z]+,就表示一个单词了——可以有任意多个大小写字母不断重复组成,不就是单词么! /w:表示单词;这比上面的方式更加简单!这个缩写可以匹配所有的单词字符,不仅仅是ascii的单词字符,因此更适合国际化环境。 一个圆点(.):表示一个任意字符; 可选择的匹配:意味着从两个或者多个子表达式中选择一个匹配的子表达式,每个选择之间用竖线符号(|)进行分隔。比如: regex reg("(//d{2}|N/A)"),表示2个数字,或者字符串“N/A”。值得注意的是:这个表达式用圆括号括起来,目的是为了确保可以将整个表达式看做两个可选项。 /s,表示一个空格; 后向引用(back reference操作):即在后面的表达式中,对前面的子表达式进行引用。可以用索引号来进行,比如下面的例子: 就是表示:一个单词,然后加一个空格,然后再是这个单词。第一个括号里面的部分([a-zA-Z]+),为子表达式。(最后的//1,注意,是索引“一”,而不是字母“L”的小写哦!) kleene星号(*),它表示前面的表达式可以被匹配零次或者多次。 问号(?),它可以被用于声明非贪婪的重复(关于这方面的讨论,参见Regex代码),但是就它自身而言,它表示表达式必须出现零次或者一次。 元字符(^),表示取反的字符类。我们可以用它来表示一个匹配任意不在给定字符类中的字符,即所列出的字符类的补集,参见代码。 关于约束重复记号,用法非常灵活,比如:
需要注意的是,在编程时,需要在转义字符之前再加一个转义字符(/),并以一个非字母字符结束该序列。也就是说,虽然我们/d就表示一个数字,但是在写的时候,应该写作
第二部分:常用正则表达式示例 正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内):[^x00-xff] 匹配空白行的正则表达式:ns*r 匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? /> 匹配首尾空白字符的正则表达式:^s*|s*$ 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匹配网址URL的正则表达式:[a-zA-z]+://[^s]* 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 匹配腾讯QQ号:[1-9][0-9]{4,} 匹配中国邮政编码:[1-9]d{5}(?!d) 匹配身份证:d{15}|d{18} 匹配ip地址:d+.d+.d+.d+ 匹配特定数字: 匹配特定字符串: 原载地址:http://lifesinger.3322.org/myblog/?p=185 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |