按CTRL+F查找,资源来源于网络,有问题联系楼主处理。
- 正则表达式语法说明
- \
- ------------------------------------------------
- 将下一个字符标记为特殊字符或字面值。
- 例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\"与""匹配对面,"\("与"("匹配。
复制代码- ^
- ------------------------------------------------
- 匹配输入的开始位置。
复制代码- $
- ------------------------------------------------
- 匹配输入的结尾。
复制代码- *
- ------------------------------------------------
- 匹配前一个字符零次或几次。
- 例如,"zo*"可以匹配"z"、"zoo"。
复制代码- +
- ------------------------------------------------
- 匹配前一个字符一次或多次。
- 例如,"zo+"可以匹配"zoo",但不匹配"z"。
复制代码- ?
- ------------------------------------------------
- 匹配前一个字符零次或一次。
- 例如,"a?ve?"可以匹配"never"中的"ve"。
复制代码- .
- ------------------------------------------------
- 匹配换行符以外的任何字符。
复制代码- (pattern)
- ------------------------------------------------
- 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的Matches集合中使用Item[0]...[n]取得。如果要匹配括号字符(和),可使用"\("或"\)"。
复制代码- x|y
- ------------------------------------------------
- 匹配x或y。
- 例如"z|food"可匹配"z"或"food"。"(z|f)ood"匹配"zood"或"food"。
复制代码- {n}
- ------------------------------------------------
- n为非负的整数。匹配恰好n次。
- 例如,"o{2}"不能与"Bob中的"o"匹配,但是可以与"foooood"中的前两个o匹配。
复制代码- {n,}
- ------------------------------------------------
- n为非负的整数。匹配至少n次。
- 例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。
复制代码- {n,m}
- ------------------------------------------------
- m和n为非负的整数。匹配至少n次,至多m次。
- 例如,"o{1,3}"匹配"fooooood"中前三个o。"o{0,1}"等价于"o?"。
复制代码- [xyz]
- ------------------------------------------------
- 一个字符集。与括号中字符的其中之一匹配。
- 例如,"[abc]"匹配"plain"中的"a"。
复制代码- [^xyz]
- ------------------------------------------------
- 一个否定的字符集。匹配不在此括号中的任何字符。
- 例如,"[^abc]"可以匹配"plain"中的"p".
复制代码- [0-9]
- ------------------------------------------------
- 匹配0-9之间的任意1个数字。
复制代码- [a-z]
- ------------------------------------------------
- 表示某个范围内的字符。与指定区间内的任何字符匹配。
- 例如,"[a-z]"匹配"a"与"z"之间的任何1个小写字母。
复制代码- [A-Z]
- ------------------------------------------------
- 表示某个范围内的字符。与指定区间内的任何字符匹配。
- 例如,"[A-Z]"匹配"A"与"Z"之间的任何1个大写字母。
复制代码- [^m-z]
- ------------------------------------------------
- 否定的字符区间。与不在指定区间内的字符匹配。
- 例如,"[m-z]"与不在"m"到"z"之间的任何字符匹配。
复制代码- \b
- ------------------------------------------------
- 与单词的边界匹配,即单词与空格之间的位置。
- 例如,"er\b"与"never"中的"er"匹配,但是不匹配"verb"中的"er"。
复制代码- \B
- ------------------------------------------------
- 与非单词边界匹配。"ea*r\B"与"neverearly"中的"ear"匹配。
复制代码- \d
- ------------------------------------------------
- 与一个数字字符匹配。等价于[0-9]。
复制代码- \D
- ------------------------------------------------
- 与非数字的字符匹配。等价于[^0-9]。
复制代码- \f
- ------------------------------------------------
- 与分页符匹配。
复制代码- \n
- ------------------------------------------------
- 与换行符字符匹配。
复制代码- \r
- ------------------------------------------------
- 与回车字符匹配。
复制代码- \s
- ------------------------------------------------
- 与任何白字符匹配,包括空格、制表符、分页符等。等价于"[\f\n\r\t\v]"。
复制代码- \S
- ------------------------------------------------
- 与任何非空白的字符匹配。等价于"[^\f\n\r\t\v]"。
复制代码- \t
- ------------------------------------------------
- 与制表符匹配。
复制代码- \v
- ------------------------------------------------
- 与垂直制表符匹配。
复制代码- \w
- ------------------------------------------------
- 与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。
复制代码- \W
- ------------------------------------------------
- 与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。
复制代码- \num
- ------------------------------------------------
- 匹配num个,其中num为一个正整数。引用回到记住的匹配。
- 例如,"(.)\1"匹配两个连续的相同的字符。
复制代码- \n
- ------------------------------------------------
- 匹配n,其中n是一个八进制换码值。八进制换码值必须是1,2或3个数字长。
- 例如,"\11"和"\011"都与一个制表符匹配。"\0011"等价于"\001"与"1"。八进制换码值不得超过256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。
复制代码- \xn
- ------------------------------------------------
- 匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。
- 例如,"\x41"匹配"A"。"\x041"等价于"\x04"和"1"。允许在正则表达式中使用ASCII码。
复制代码
- 常用正则语句
- 网页相关
- 匹配HTML标记
- ------------------------------------------------
- <(\S*?)[^>]*>.*?</\1>|<.*? />
- 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
复制代码- 匹配链接地址
- ------------------------------------------------
- href *= *['"]*(\S+)["']评注:匹配网页上的链接地址
复制代码- 匹配链接地址和标题
- ------------------------------------------------
- \<a href *= *['"]*(\S+)["'].*\>(.[^\<]*)?\</a>
- 评注:匹配网页上的链接地址及标题
复制代码- 匹配网址URL
- ------------------------------------------------
- [a-zA-z]+://[^\s]*
- 评注:网上流传的版本功能很有限,上面这个基本可以满足需求
复制代码- 匹配网站域名
- ------------------------------------------------
- [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
- 评注:一个完整的域名,由根域、顶级域、二级、三级……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过63。
- 很显然,单独的名字可以由正则表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}来匹配,而完整的域名至少包括两个名字(比如google.com,由google和com构成),最后可以有一个表示根域的点(在规范中,最后有一个点的才是完整域名,但一般认为包括两个以上名字的域名也是完整域名,哪怕它后面没有点)。
复制代码- 匹配IP地址
- ------------------------------------------------
- \d+\.\d+\.\d+\.\d+
- 评注:提取ip地址时有用
复制代码- 匹配Email地址
- ------------------------------------------------
- \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
- 评注:表单验证时很实用
复制代码- 匹配图片引用地址
- ------------------------------------------------
- \<img.*src *= *['"]*(\S+)["'].*\>
- 评注:可用在网页图片提取等地方
复制代码- 匹配帐号是否合法
- ------------------------------------------------
- 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
- 评注:表单验证时很实用
复制代码- 匹配密码是否合法
- ------------------------------------------------
- ^[a-zA-Z]\w{5,17}$
- 评注:密码正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
复制代码
- 匹配相关数字
- 匹配国内电话号码
- ------------------------------------------------
- \d{3,4}[\s,-]?\d{7,8}
- 评注:匹配形式如 0511-4405222 或 021-87888822
复制代码- 匹配手机号码
- ------------------------------------------------
- 1[3,4,5,8]\d[\s,-]?\d{4}[\s,-]?\d{4}+
- 评注:校验手机号码:必须以数字开头,除数字外,可含有“-” 或空格
复制代码- 匹配腾讯QQ号
- ------------------------------------------------
- [1-9][0-9]{4,}
- 评注:腾讯QQ号从10000开始
复制代码- 匹配中国邮政编码
- ------------------------------------------------
- [1-9]\d{5}(?!\d)
- 评注:中国邮政编码为6位数字
复制代码- 匹配身份证号码
- ------------------------------------------------
- [1-9][0-9,X]{14,17}
- 评注:中国的身份证为15位或18位
复制代码- 匹配特定的数字
- ------------------------------------------------
- ^[1-9]\d*$ //匹配正整数
- ^-[1-9]\d*$ //匹配负整数
- ^-?[1-9]\d*$ //匹配整数
- ^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
- ^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
- ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
- ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
- ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
- ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
- ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
- 评注:处理大量数据时有用,具体应用时注意修正
复制代码
- 匹配字符串
- 匹配中文字符
- ------------------------------------------------
- [\u4e00-\u9fa5]
- 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
复制代码- 匹配双字节字符
- ------------------------------------------------
- 包括汉字在内:[^\x00-\xff]
- 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
复制代码- 匹配空白行
- ------------------------------------------------
- \n\s*\r
- 评注:可以用来删除空白行
复制代码- 匹配首尾空白字符
- ------------------------------------------------
- ^\s*|\s*$
- 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
复制代码- 匹配特定字符串
- ------------------------------------------------
- ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
- ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
- ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
- ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
- ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
- 评注:最基本也是最常用的一些表达式
复制代码- 匹配多行文本
- ------------------------------------------------
- 开始关键字([\s\S]*?)结束关键字
- ----应用实例:-----------------
- <table>
- <tr>
- <td>单元格1</td><td>单元格2</td>
- </tr>
- <tr>
- <td>单元格3</td><td>单元格4</td>
- </tr>
- </table>
- 正则表达式.创建 (“<tr>([\s\S]*?)</tr>”)
复制代码
|