设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 4669|回复: 11
收起左侧

[正则/伪静态/Robots] 常用正则表达式语法语句说明、匹配各类数字号码中英文字符串大全

[复制链接]
发表于 2018-6-29 09:25:57 | 显示全部楼层 |阅读模式
按CTRL+F查找,资源来源于网络,有问题联系楼主处理。
  • 正则表达式语法说明
    1. \
    2. ------------------------------------------------
    3. 将下一个字符标记为特殊字符或字面值。
    4. 例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\"与""匹配对面,"\("与"("匹配。
    复制代码
    1. ^
    2. ------------------------------------------------
    3. 匹配输入的开始位置。
    复制代码
    1. $
    2. ------------------------------------------------
    3. 匹配输入的结尾。
    复制代码
    1. *
    2. ------------------------------------------------
    3. 匹配前一个字符零次或几次。
    4. 例如,"zo*"可以匹配"z"、"zoo"。
    复制代码
    1. +
    2. ------------------------------------------------
    3. 匹配前一个字符一次或多次。
    4. 例如,"zo+"可以匹配"zoo",但不匹配"z"。
    复制代码
    1. ?
    2. ------------------------------------------------
    3. 匹配前一个字符零次或一次。
    4. 例如,"a?ve?"可以匹配"never"中的"ve"。
    复制代码
    1. .
    2. ------------------------------------------------
    3. 匹配换行符以外的任何字符。
    复制代码
    1. (pattern)
    2. ------------------------------------------------
    3. 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的Matches集合中使用Item[0]...[n]取得。如果要匹配括号字符(和),可使用"\("或"\)"。
    复制代码
    1. x|y
    2. ------------------------------------------------
    3. 匹配x或y。
    4. 例如"z|food"可匹配"z"或"food"。"(z|f)ood"匹配"zood"或"food"。
    复制代码
    1. {n}
    2. ------------------------------------------------
    3. n为非负的整数。匹配恰好n次。
    4. 例如,"o{2}"不能与"Bob中的"o"匹配,但是可以与"foooood"中的前两个o匹配。
    复制代码
    1. {n,}
    2. ------------------------------------------------
    3. n为非负的整数。匹配至少n次。
    4. 例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。
    复制代码
    1. {n,m}
    2. ------------------------------------------------
    3. m和n为非负的整数。匹配至少n次,至多m次。
    4. 例如,"o{1,3}"匹配"fooooood"中前三个o。"o{0,1}"等价于"o?"。
    复制代码
    1. [xyz]
    2. ------------------------------------------------
    3. 一个字符集。与括号中字符的其中之一匹配。
    4. 例如,"[abc]"匹配"plain"中的"a"。
    复制代码
    1. [^xyz]
    2. ------------------------------------------------
    3. 一个否定的字符集。匹配不在此括号中的任何字符。
    4. 例如,"[^abc]"可以匹配"plain"中的"p".
    复制代码
    1. [0-9]
    2. ------------------------------------------------
    3. 匹配0-9之间的任意1个数字。
    复制代码
    1. [a-z]
    2. ------------------------------------------------
    3. 表示某个范围内的字符。与指定区间内的任何字符匹配。
    4. 例如,"[a-z]"匹配"a"与"z"之间的任何1个小写字母。
    复制代码
    1. [A-Z]
    2. ------------------------------------------------
    3. 表示某个范围内的字符。与指定区间内的任何字符匹配。
    4. 例如,"[A-Z]"匹配"A"与"Z"之间的任何1个大写字母。
    复制代码
    1. [^m-z]
    2. ------------------------------------------------
    3. 否定的字符区间。与不在指定区间内的字符匹配。
    4. 例如,"[m-z]"与不在"m"到"z"之间的任何字符匹配。
    复制代码
    1. \b
    2. ------------------------------------------------
    3. 与单词的边界匹配,即单词与空格之间的位置。
    4. 例如,"er\b"与"never"中的"er"匹配,但是不匹配"verb"中的"er"。
    复制代码
    1. \B
    2. ------------------------------------------------
    3. 与非单词边界匹配。"ea*r\B"与"neverearly"中的"ear"匹配。
    复制代码
    1. \d
    2. ------------------------------------------------
    3. 与一个数字字符匹配。等价于[0-9]。
    复制代码
    1. \D
    2. ------------------------------------------------
    3. 与非数字的字符匹配。等价于[^0-9]。
    复制代码
    1. \f
    2. ------------------------------------------------
    3. 与分页符匹配。
    复制代码
    1. \n
    2. ------------------------------------------------
    3. 与换行符字符匹配。
    复制代码
    1. \r
    2. ------------------------------------------------
    3. 与回车字符匹配。
    复制代码
    1. \s
    2. ------------------------------------------------
    3. 与任何白字符匹配,包括空格、制表符、分页符等。等价于"[\f\n\r\t\v]"。
    复制代码
    1. \S
    2. ------------------------------------------------
    3. 与任何非空白的字符匹配。等价于"[^\f\n\r\t\v]"。
    复制代码
    1. \t
    2. ------------------------------------------------
    3. 与制表符匹配。
    复制代码
    1. \v
    2. ------------------------------------------------
    3. 与垂直制表符匹配。
    复制代码
    1. \w
    2. ------------------------------------------------
    3. 与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。
    复制代码
    1. \W
    2. ------------------------------------------------
    3. 与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。
    复制代码
    1. \num
    2. ------------------------------------------------
    3. 匹配num个,其中num为一个正整数。引用回到记住的匹配。
    4. 例如,"(.)\1"匹配两个连续的相同的字符。
    复制代码
    1. \n
    2. ------------------------------------------------
    3. 匹配n,其中n是一个八进制换码值。八进制换码值必须是1,2或3个数字长。
    4. 例如,"\11"和"\011"都与一个制表符匹配。"\0011"等价于"\001"与"1"。八进制换码值不得超过256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。
    复制代码
    1. \xn
    2. ------------------------------------------------
    3. 匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。
    4. 例如,"\x41"匹配"A"。"\x041"等价于"\x04"和"1"。允许在正则表达式中使用ASCII码。
    复制代码

  • 常用正则语句
  • 网页相关
    1. 匹配HTML标记
    2. ------------------------------------------------
    3. <(\S*?)[^>]*>.*?</\1>|<.*? />
    4. 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
    复制代码
    1. 匹配链接地址
    2. ------------------------------------------------
    3. href *= *['"]*(\S+)["']评注:匹配网页上的链接地址
    复制代码
    1. 匹配链接地址和标题
    2. ------------------------------------------------
    3. \<a href *= *['"]*(\S+)["'].*\>(.[^\<]*)?\</a>
    4. 评注:匹配网页上的链接地址及标题
    复制代码
    1. 匹配网址URL
    2. ------------------------------------------------
    3. [a-zA-z]+://[^\s]*
    4. 评注:网上流传的版本功能很有限,上面这个基本可以满足需求
    复制代码
    1. 匹配网站域名
    2. ------------------------------------------------
    3. [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
    4. 评注:一个完整的域名,由根域、顶级域、二级、三级……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过63。
    5. 很显然,单独的名字可以由正则表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}来匹配,而完整的域名至少包括两个名字(比如google.com,由google和com构成),最后可以有一个表示根域的点(在规范中,最后有一个点的才是完整域名,但一般认为包括两个以上名字的域名也是完整域名,哪怕它后面没有点)。
    复制代码
    1. 匹配IP地址
    2. ------------------------------------------------
    3. \d+\.\d+\.\d+\.\d+
    4. 评注:提取ip地址时有用
    复制代码
    1. 匹配Email地址
    2. ------------------------------------------------
    3. \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
    4. 评注:表单验证时很实用
    复制代码
    1. 匹配图片引用地址
    2. ------------------------------------------------
    3. \<img.*src *= *['"]*(\S+)["'].*\>
    4. 评注:可用在网页图片提取等地方
    复制代码
    1. 匹配帐号是否合法
    2. ------------------------------------------------
    3. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    4. 评注:表单验证时很实用
    复制代码
    1. 匹配密码是否合法
    2. ------------------------------------------------
    3. ^[a-zA-Z]\w{5,17}$
    4. 评注:密码正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
    复制代码

  • 匹配相关数字
    1. 匹配国内电话号码
    2. ------------------------------------------------
    3. \d{3,4}[\s,-]?\d{7,8}
    4. 评注:匹配形式如 0511-4405222 或 021-87888822
    复制代码
    1. 匹配手机号码
    2. ------------------------------------------------
    3. 1[3,4,5,8]\d[\s,-]?\d{4}[\s,-]?\d{4}+
    4. 评注:校验手机号码:必须以数字开头,除数字外,可含有“-” 或空格
    复制代码
    1. 匹配腾讯QQ号
    2. ------------------------------------------------
    3. [1-9][0-9]{4,}
    4. 评注:腾讯QQ号从10000开始
    复制代码
    1. 匹配中国邮政编码
    2. ------------------------------------------------
    3. [1-9]\d{5}(?!\d)
    4. 评注:中国邮政编码为6位数字
    复制代码
    1. 匹配身份证号码
    2. ------------------------------------------------
    3. [1-9][0-9,X]{14,17}
    4. 评注:中国的身份证为15位或18位
    复制代码
    1. 匹配特定的数字
    2. ------------------------------------------------
    3. ^[1-9]\d*$    //匹配正整数
    4. ^-[1-9]\d*$   //匹配负整数
    5. ^-?[1-9]\d*$   //匹配整数
    6. ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
    7. ^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
    8. ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
    9. ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
    10. ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
    11. ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$    //匹配非负浮点数(正浮点数 + 0)
    12. ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
    13. 评注:处理大量数据时有用,具体应用时注意修正
    复制代码

  • 匹配字符串
    1. 匹配中文字符
    2. ------------------------------------------------
    3. [\u4e00-\u9fa5]
    4. 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
    复制代码
    1. 匹配双字节字符
    2. ------------------------------------------------
    3. 包括汉字在内:[^\x00-\xff]
    4. 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
    复制代码
    1. 匹配空白行
    2. ------------------------------------------------
    3. \n\s*\r
    4. 评注:可以用来删除空白行
    复制代码
    1. 匹配首尾空白字符
    2. ------------------------------------------------
    3. ^\s*|\s*$
    4. 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
    复制代码
    1. 匹配特定字符串
    2. ------------------------------------------------
    3. ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
    4. ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
    5. ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
    6. ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
    7. ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
    8. 评注:最基本也是最常用的一些表达式
    复制代码
    1. 匹配多行文本
    2. ------------------------------------------------
    3. 开始关键字([\s\S]*?)结束关键字
    4. ----应用实例:-----------------
    5. <table>
    6.   <tr>
    7.    <td>单元格1</td><td>单元格2</td>
    8.   </tr>
    9.   <tr>
    10.    <td>单元格3</td><td>单元格4</td>
    11.   </tr>
    12. </table>
    13. 正则表达式.创建 (“<tr>([\s\S]*?)</tr>”)
    复制代码

发表于 2019-4-12 17:40:35 | 显示全部楼层
啧啧啧 发表于 2018-9-12 16:26
看不动,路过此地哈哈哈

1个帖子回了俩...
发表于 2019-6-9 19:24:46 来自手机 | 显示全部楼层
花心大萝卜 发表于 2019-4-12 17:40
1个帖子回了俩...

卡的吧
发表于 2018-6-30 16:25:29 | 显示全部楼层
这玩意其实比那啥都难了....
发表于 2018-6-29 20:40:39 | 显示全部楼层
1个也看不懂,路过帮顶
发表于 2018-6-29 21:07:22 | 显示全部楼层
我也同楼上
发表于 2018-6-30 09:16:13 | 显示全部楼层
没摸索过,路过打酱油
发表于 2018-6-30 12:50:48 | 显示全部楼层
总绝的很强大的酱紫
发表于 2018-8-11 20:37:21 | 显示全部楼层
好像是哪里的
发表于 2018-9-12 16:26:49 | 显示全部楼层
看不动,路过此地哈哈哈
发表于 2018-12-20 11:32:28 | 显示全部楼层
小弟看不懂
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-20 17:18 , Processed in 0.565032 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表