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

    正则表达式,

    一个十分古老而又强大的文本处理工具,

    仅仅用一段非常简短

    的表达式语句,

    便能够快速实现一个非常复杂的业务逻辑。

    熟练地掌握正则表达

    式的话,能够使你的开发效率得到极大的提升。

     

    正则表达式经常被用于字段或任意字符串的校验,

    如下面这段校验基本日期

    格式的

    JavaScript

    代码:

     

    varreg

    =

     /^

    (

    \d

    {

    1,4

    })(

    -

    |

    \/

    )(

    \d

    {

    1,2

    })

    \2

    (

    \d

    {

    1,2

    })

    $/

    ;

     

    var r 

    =

    fieldValue.match

    (

    reg

    );

     

    if

    (

    r

    ==

    null

    )

    alert

    (

    'Date format error!'

    );

     

    下面是

    技匠

    整理的,在前端开发中经常使用到的

    20

    个正则表达式。

     

    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])?

     

    校验身份证号码

     

    下面是身份证号码的正则校验。

    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

    ])

    -3

    1

    )

    |

    (

    ?:

    [

    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

    -

    f

    A

    -

    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- ./?

    %

    &=

    ]

    *

    )

     

     

    提取

    html

    中的超链接。

     

    (

    <

    a\s*

    (

    ?

    !

    .*\brel

    =

    )[

    ^

    >

    ]

    *

    )(

    href

    =

    "https?:\/\/)

    ((

    ?!

    (

    ?:

    (

    ?:

    w

    ww\.

    )

    ?

    '.implode

    (

    '

    |

    (

    ?:

    www\.

    )

    ?

    '

    ,

     

    $follow_list

    )

    .'

    ))

    [^"

    ]

    +

    )

    "

    ((

    ?

    !

    .*\brel

    =

    )[

    ^

    >

    ]

    *

    )(

    ?:

    [

    ^

    >

    ]

    *

    )

    >

     

    18. 

    查找

    CSS

    属性

     

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

    CSS

    属性。

     

    ^\s*

    [

    a-zA-Z\-

    ]

    +\s*

    [

    :

    ]{

    1

    }

    \s

    [

    a-zA-Z0-9\s.

    #]+[;]{1}

     

    19. 

    抽取注释

     

    如果你需要移除

    HMTL

    中的注释,可以使用如下的表达式。

     

    <!

    --

    (

    .*?

    )

    --

    >

     

    20. 

    匹配

    HTML

    标签

     

    通过下面的表达式可以匹配出

    HTML

    中的标签属性。

     

    <

    \/?\w+

    ((

    \s+\w+

    (

    \s*

    =

    \s*

    (

    ?:

    ".*?"

    |

    '.*?'

    |

    [

    \^'"

    >

    \s

    ]

    +

    ))

    ?

    )

    +\s*

    |

    \s*

    )

    \/?

    >

  • 相关阅读:
    正则表达式
    浏览器加载时间线
    浏览器事件
    脚本化CSS
    定时器元素大小位置属性等 20181231
    关于行内元素 20181229
    个人冲刺01
    周总结
    团队冲刺10
    团队冲刺09
  • 原文地址:https://www.cnblogs.com/lizuoqi/p/6089515.html
Copyright © 2011-2022 走看看