正则表达式—— 20个常用的正则表达式

 

转自 https://blog.csdn.net/wangyanchang21/article/details/53497202 感谢作者 给出这么详细的解说

 

1.校验密码强度

密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

 

2.校验中文

字符串仅能是中文。

^[\u4e00-\u9fa5]{0,}$

 

3.由数字、26个英文字母或下划线组成的字符串

^\w+$

 

4.校验E-Mail地址

同密码一样,下面是E-mail地址合规性的正则检查语句。

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

 

5.校验身份证号码

下面是身份证号码的正则校验。15或18位。

15位:

^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

 

18位:

^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$

 

6.校验日期

“yyyy-mm-dd“格式的日期校验,已考虑平闰年。

^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

 

7.校验金额

金额校验,精确到2位小数。

^[0-9]+(.[0-9]{2})?$

 

8.校验手机号

手机号以13、14、15、 17、18开头,九个 \d 数字字符

^1[34578]\\d{9}$

 

9.判断IE的版本

IE目前还没被完全取代,很多页面还是需要做版本兼容,下面是IE版本检查的表达式。

^.*MSIE[5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$

 

10.校验IP-v4地址

IP4正则语句。

\b(?:(?: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]?)\b

 

11.校验IP-v6地址

IP6正则语句。

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

 

12.检查URL的前缀

应用开发中很多时候需要区分请求是HTTPS还是HTTP,通过下面的表达式可以取出一个url的前缀然后再逻辑判断。

if(!s.match(/^[a-zA-Z]+:\/\//)) { s='http://'+s; }

 

13.提取URL链接

下面的这个表达式可以筛选出一段文本中的URL。

^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?

 

14.文件路径及扩展名校验

验证windows下文件路径和扩展名(下面的例子中为.txt文件)

^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$

 

15.提取ColorHexCodes

有时需要抽取网页中的颜色代码,可以使用下面的表达式。

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

 

16.提取网页图片

假若你想提取网页中所有图片信息,可以利用下面的表达式。

\]*[src]*=*[\"\']{0,1}([^\"\'\>]*)

 

17.提取页面超链接

提取html中的超链接。

(]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?',$follow_list).'))[^"]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>

 

18.查找CSS属性

通过下面的表达式,可以搜索到相匹配的CSS属性。

^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}

 

19.抽取注释

如果你需要移除HMTL中的注释,可以使用如下的表达式。

<br>

 

20.匹配HTML标签

通过下面的表达式可以匹配出HTML中的标签属性。

<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[\^'">\s]+))?)+\s*|\s*)\/?>

正则表达式简单说明

 语法:

  1. . 匹配除换行符以外的任意字符
  2. \w 匹配字母或数字或下划线或汉字
  3. \s 匹配任意的空白符
  4. \d 匹配数字
  5. \b 匹配单词的开始或结束
  6. ^ 匹配字符串的开始
  7. $ 匹配字符串的结束
  8. * 重复零次或更多次
  9. + 重复一次或更多次
  10. ? 重复零次或一次
  11. {n} 重复n次
  12. {n,} 重复n次或更多次
  13. {n,m} 重复n到m次
  14. \W 匹配任意不是字母,数字,下划线,汉字的字符
  15. \S 匹配任意不是空白符的字符
  16. \D 匹配任意非数字的字符
  17. \B 匹配不是单词开头或结束的位置
  18. [^x] 匹配除了x以外的任意字符
  19. [^aeiou]匹配除了aeiou这几个字母以外的任意字符
  20. *? 重复任意次,但尽可能少重复
  21. +? 重复1次或更多次,但尽可能少重复
  22. ?? 重复0次或1次,但尽可能少重复
  23. {n,m}? 重复n到m次,但尽可能少重复
  24. {n,}? 重复n次以上,但尽可能少重复
  25. \a 报警字符(打印它的效果是电脑嘀一声)
  26. \b 通常是单词分界位置,但如果在字符类里使用代表退格
  27. \t 制表符,Tab
  28. \r 回车
  29. \v 竖向制表符
  30. \f 换页符
  31. \n 换行符
  32. \e Escape
  33. \0nn ASCII代码中八进制代码为nn的字符
  34. \xnn ASCII代码中十六进制代码为nn的字符
  35. \unnnn Unicode代码中十六进制代码为nnnn的字符
  36. \cN ASCII控制字符。比如\cC代表Ctrl+C
  37. \A 字符串开头(类似^,但不受处理多行选项的影响)
  38. \Z 字符串结尾或行尾(不受处理多行选项的影响)
  39. \z 字符串结尾(类似$,但不受处理多行选项的影响)
  40. \G 当前搜索的开头
  41. \p{name} Unicode中命名为name的字符类,例如\p{IsGreek}
  42. (?>exp) 贪婪子表达式
  43. (?<x>-<y>exp) 平衡组
  44. (?im-nsx:exp) 在子表达式exp中改变处理选项
  45. (?im-nsx) 为表达式后面的部分改变处理选项
  46. (?(exp)yes|no) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
  47. (?(exp)yes) 同上,只是使用空表达式作为no
  48. (?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
  49. (?(name)yes) 同上,只是使用空表达式作为no 捕获
  50. (exp) 匹配exp,并捕获文本到自动命名的组里
  51. (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
  52. (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 零宽断言
  53. (?=exp) 匹配exp前面的位置
  54. (?<=exp) 匹配exp后面的位置
  55. (?!exp) 匹配后面跟的不是exp的位置
  56. (?<!exp) 匹配前面不是exp的位置 注释
  57. (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

(注释开始:

表达式:\(?0\d{2}[) -]?\d{8}

 这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。

我们对它进行一些分析吧:

首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),

最后是8个数字(\d{8})

注释结束)

 

验证数字的正则表达式集

  1. 验证数字:^[0-9]*$
  2. 验证n位的数字:^\d{n}$
  3. 验证至少n位数字:^\d{n,}$
  4. 验证m-n位的数字:^\d{m,n}$
  5. 验证零和非零开头的数字:^(0|[1-9][0-9]*)$
  6. 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
  7. 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
  8. 验证非零的正整数:^\+?[1-9][0-9]*$
  9. 验证非零的负整数:^\-[1-9][0-9]*$
  10. 验证非负整数(正整数 + 0) ^\d+$
  11. 验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
  12. 验证长度为3的字符:^.{3}$
  13. 验证由26个英文字母组成的字符串:^[A-Za-z]+$
  14. 验证由26个大写英文字母组成的字符串:^[A-Z]+$
  15. 验证由26个小写英文字母组成的字符串:^[a-z]+$
  16. 验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
  17. 验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
  18. 验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。 验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
  19. 验证汉字:^[\u4e00-\u9fa5],{0,}$
  20. 验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  21. 验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
  22. 验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
  23. 验证身份证号(15位或18位数字):^\d{15}|\d{}18$
  24. 验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
  25. 验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
  26. 整数:^-?\d+$
  27. 非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
  28. 正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
  29. 非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
  30. 负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
  31. 浮点数 ^(-?\d+)(\.\d+)?

 

正则表达式在线测试工具

1.regex101 

2.正则表达式测试器 

3.Javascript正则表达式在线测试工具

参考资料及推荐阅读: 

1.正则表达式语言 - 快速参考(中文) 

2.快速学习指南(英文) 

3.专业的正则表达式教学网站(英文) 

4.正则表达式30分钟入门教程 

5.知道这20个正则表达式,能让你少写1,000行代码

 

stay hungry,stay foolish !求知若饥,虚心若愚 ~

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值