zoukankan      html  css  js  c++  java
  • 知道这 20 个正则表达式,能让你少写 1,000 行代码

     
    CocoaChina05-13

    正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。下面是@技匠整理的,在前端开发中经常使用到的 20 个正则表达式。

    正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的 JavaScript 代码:

    varreg=/^ ( d{1,4} ) ( -|/ ) ( d{1,2} ) 2 ( d{1,2} ) $/;varr=fieldValue.match ( reg ) ;if ( r==null ) alert ( 'Dateformaterror!' ) ;

    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} ( ( 0d ) | ( 1 [ 0-2 ] ) ) ( ( [ 0|1|2 ] d ) |3 [ 0-1 ] ) d{3}$

    18 位:

    ^ [ 1-9 ] d{5} [ 1-9 ] d{3} ( ( 0d ) | ( 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、15、18 开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)

    ^ ( 13 [ 0-9 ] |14 [ 5|7 ] |15 [ 0|1|2|3|5|6|7|8|9 ] |18 [ 0|1|2|3|5|6|7|8|9 ] ) d{8}$

    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-9s.# ] + [ ; ] {1}

    19. 抽取注释

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

    20. 匹配 HTML 标签

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

    s ] + ) ) ? ) +s*|s* ) /?>

    正则表达式的相关语法

    下面是我找到的一张非常不错的正则表达式 Cheat Sheet,可以用来快速查找相关语法。

    学习正则表达式

    我在网上看到了一篇相当不错的正则表达式快速学习指南,有兴趣继续深入学习的同学可以参考。

    正则表达式在线测试工具

    regex101是一个非常不错的正则表达式在线测试工具,你可以直接在线测试你的正则表达式哦。

    如果你也收藏了非常有用的正则表达式,不妨也在点评中分享哦 ^_^
  • 相关阅读:
    动态规划 01背包问题
    日常水题 蓝桥杯基础练习VIP-字符串对比
    本博客导航
    2019 ICPC 南昌 (C E G L)
    [模板]线段树
    [模板]手写双端队列(或普通队列)
    2019 ICPC Asia Yinchuan Regional (G, H)
    与超级源点与超级汇点相关的两题POJ 1062, HDU 4725
    [模板]链式向前星
    [总结]关于反向建图
  • 原文地址:https://www.cnblogs.com/sunshine-liuxin/p/5543685.html
Copyright © 2011-2022 走看看