Python爬⾍常⽤正则表达式总结(全)
常⽤正则
⼀、输⼊框防⽌特殊字符勿输⼊验证
这个是输⼊框防⽌特殊字符勿输⼊验证,包括键盘上所有特殊字符的英⽂和中⽂状态。需要者可以根据⾃⾝需求⽽定!谢谢!
[^\w\s]+
匹配⾮空 ⾮字母 ⾮数字 即可
1 数字:*$
2 n位的数字:^\d{n}$
3 ⾄少n位的数字:^\d{n,}$
4 m-n位的数字:^\d{m,n}$
5 零和⾮零开头的数字:^(0|[1-9][0-9]*)$
6 ⾮零开头的最多带两位⼩数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 带1-2位⼩数的正数或负数:^(-)?\d+(.\d{1,2})?$
8 正数、负数、和⼩数:^(-|+)?\d+(.\d+)?$
9 有两位⼩数的正实数:+(.[0-9]{2})?$
10 有1~3位⼩数的正实数:+(.[0-9]{1,3})?$
11 ⾮零的正整数:\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
12 ⾮零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$
13 ⾮负整数:^\d+$ 或 \d*|0$
14 ⾮正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 ⾮负浮点数:^\d+(.\d+)?$ 或 \d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
python正则表达式不包含16 ⾮正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
17 正浮点数:\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
18 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
19 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$
⼆、校验字符的表达式
1 汉字:{0,}$
2 英⽂和数字:+$ 或 {4,40}$
3 长度为3-20的所有字符:^.{3,20}$
4 由26个英⽂字母组成的字符串:+$
5 由26个⼤写英⽂字母组成的字符串:+$
6 由26个⼩写英⽂字母组成的字符串:+$
7 由数字和26个英⽂字母组成的字符串:+$
8 由数字、26个英⽂字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
9 中⽂、英⽂、数字包括下划线:+$
10 中⽂、英⽂、数字但不包括下划线等符号:+$ 或 {2,20}$
11 可以输⼊含有^%&’,;=?KaTeX parse error: Can't use function '\"' in math mode at position 1: \"等字符:[^%&',;=?\x22]+12 禁⽌输⼊含有\x22]+
三、特殊需求表达式
Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
a、⾃定义完美的邮箱验证:(java)
<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+))|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
b、(js或jq)
<>()[]\.,;:\s@"]+(.[^<>()[]\.,;:\s@"]+))|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
4 ⼿机号码最新:
^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$(java)
^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$(js或jq)
5 电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、"XXX-
1
XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6 国内电话号码(0511-*******、021-********):\d{3}-\d{8}|\d{4}-\d{7}
7 ⾝份证号(15位、18位数字):^\d{15}|\d{18}$
8 短⾝份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):[a-zA-Z0-9_]{4,15}$
10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):\w{5,17}$
11 强密码(必须包含⼤⼩写字母和数字的组合,不能使⽤特殊字符,长度在8-10之间):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$12 ⽇期格式:^\d{4}-\d{1,2}-\d{1,2}
13 ⼀年的12个⽉(01~09和1~12):^(0?[1-9]|1[0-2])$
14 ⼀个⽉的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
15 钱的输⼊格式:
16 1.有四种钱的表⽰形式我们可以接受:“10000.00” 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:[0-9]*$17 2.这表⽰任意⼀个不以0开头的数字,但是,这也意味着⼀个字符"0"不通过,所以我们采⽤下⾯的形式:^(0|[1-9][0-9]*)$
18 3.⼀个0或者⼀个不以0开头的数字.我们还可以允许开头有⼀个负号:^(0|-?[1-9][0-9]*)$
19 4.这表⽰⼀个0或者⼀个可能为负的开头不为0的数字.让⽤户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下⾯我们要加的是说明可能的⼩数部分:+(.[0-9]+)?$
20 5.必须说明的是,⼩数点后⾯⾄少应该有1位数,所以"10."是不通过的,但是 “10” 和 “10.2” 是通过的:+(.[0-9]{2})?$
21 6.这样我们规定⼩数点后⾯必须有两位,如果你认为太苛刻了,可以这样:+(.[0-9]{1,2})?$
22 7.这样就允许⽤户只写⼀位⼩数.下⾯我们该考虑数字中的逗号了,我们可以这样:{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
的字符:[^(([(([
23 8.1到3个数字,后⾯跟着任意个 逗号+3个数字,逗号成为可选,⽽不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 备注:这就是最终结果了,别忘了"+“可以⽤”*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在⽤函数时去掉去掉那个反斜杠,⼀般的错误都在这⾥
25 xml⽂件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
26 中⽂字符的正则表达式:[\u4e00-\u9fa5]
27 双字节字符:[^\x00-\xff] (包括汉字在内,可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1))
28 空⽩⾏的正则表达式:\n\s*\r (可以⽤来删除空⽩⾏)
29 HTML标记的正则表达式:<(\S*?)[^>]>.?</\1>|<.*? /> (⽹上流传的版本太糟糕,上⾯这个也仅仅能部分,对于复杂的嵌套标记依旧⽆能为⼒)
30 ⾸尾空⽩字符的正则表达式:^\s*|\s*KaTeX parse error: Undefined control sequence: \s at position 4: 或(^\s *)|(\s*) (可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式)
31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
32 中国:[1-9]\d{5}(?!\d) (中国为6位数字) 33 IP地址:\d+.\d+.\d+.\d+ (提取IP地址时有⽤) 34 IP地址:((? ?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
正则表达式可以为空值,不为空则要格式。
格式如下:
^KaTeX parse error: Undefined control sequence: \d at position 4: |^(\d +|\-){7,} ("|"后边的是要符合格式。)
如果可以为空的空可以是空格和制表符那就这么写:^\s*KaTeX parse error: Undefined control sequence: \d at position 4:|^(\d +|\-){7,}
正则表达式不为空⽤\S匹配,不能有空格可以⽤[^ ]匹配,[]中^后⾯是⼀个空格。
[size=12px]1。^d+ //匹配正整数
3。^((-d+)|(0+)) //匹配负整数
5。^-?d+ //匹配⾮负浮点数(正浮点数 + 0)
7。^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])) //匹配⾮正浮点数(负浮点数 + 0)
9。^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))) //匹配浮点数
11。+ //匹配由26个英⽂字母的⼤写组成的字符串
13。+ //匹配由数字和26个英⽂字母组成的字符串
15。^w+ //匹配email地址
17。+://匹配(w+(-w+))(.(w+(-w+)))(?S )?)
四、正则表达式⽤例
//匹配⾮负整数(正整数+0)2。0−[9]∗[1−9][0−9]∗ //匹配⾮正整数(负整数+0)4。[0−−9]∗[1−9][0−9]∗ //匹配整数6。+d (.d +)? //匹配正浮点数8。(−d +((.d +)?)∣(0+(.0+)?)) //匹配负浮点数10。−?d +)(.d +)?( //匹配由26个英⽂字母组成的字符串12。A −[Z ]+ //匹配由26个英⽂字母的⼩写组成的字符串14。A −[Za −z 0−9]+ //匹配由数字、26个英⽂字母或者下划线组成的字符串16。w −]+[(.[w −]+)∗@[w −]+(.[w −]+)+ //匹配url 18。匹配中⽂字符的正则表达式:[u 4e 00−
u 9fa 5]19。匹配双字节字符(包括汉字在内):[00−
x xff ]20。应⽤:计算字符串的长度(⼀个双字节字符长度计2,ASCII 字符计1)String .prototype .len =
function ()returnthis .replace ([00−xff ]/g ,"aa ").length ;21。匹配空⾏的正则表达式:n [s ∣]∗
x r 22。匹配HTML 标记的正则表达式:/<(.∗)>.∗</1>∣<(.∗)/>/23。匹配⾸尾空格的正则表达式:(∗)∣(s ∗s
正则表达式⽤例
1、^S+[a-z A-Z]$ 不能为空 不能有空格 只能是英⽂字母
2、S{6,} 不能为空 六位以上
3、^d+$ 不能有空格 不能⾮数字
4、(.*)(.jpg|.bmp)$ 只能是jpg和bmp格式
5、^d{4}-d{1,2}-d{1,2}$ 只能是2004-10-22格式
6、^0$ ⾄少选⼀项
7、^0{2,}$ ⾄少选两项
8、{20,}$ 不能为空 ⼆⼗字以上
9、^+?*@([a-z0-9]+(.|-))+[a-z]{2,6}$邮件
10、w+([-+.]w+)@w+([-.]w+).w+([-.]w+)([,;]s w+([-+.]w+)@w+([-.]w+).w+([-.]w+)) 输⼊多个地址⽤逗号或空格分隔邮件
11、^(([0-9]+))?[0-9]{7,8}$电话号码7位或8位或前⾯有区号例如(022)87341628
12、+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+(,[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+)*$
只能是字母、数字、下划线;必须有@和.同时格式要规范邮件
13 ^w+@w+(.w+)+(,w+@w+(.w+)+)*
[/size]
欢迎收藏 点赞!上⾯表达式也可以写成这样⼦,更精练。14+
w((−w+)∣(.w+))∗@w+
((.∣−)w+)∗.w+
1. 0-9
2. 0-9
3. 0-9
4. 1-9
5. 1-9
6. 1-9
7. 1-9
8. \u4e00-\u9fa5
9. A-Za-z0-9
10. A-Za-z0-9
11. A-Za-z
12. A-Z
13. a-z
14. A-Za-z0-9
15. \u4E00-\u9FA5A-Za-z0-9_
16. \u4E00-\u9FA5A-Za-z0-9
17. \u4E00-\u9FA5A-Za-z0-9
18. a-zA-Z
19. a-zA-Z
20. 1-9
21. 0-9
22. 0-9
23. 0-9
24. 0-9
25. A-Za-z
26. a-z
27. a-zA-z
28. s|S
29. a-z A-Z 0-9 _
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论