• 正则表达式-例子学习


    正则表达式是一个编程的艺术,很难调试,学习和理解,但强大的功能,仍吸引不少开发者编写正则表达式。让我们探索一下下面10个实际应用中的正则表达式。

    1. 用户名正则表达式模式
    ^[a-z0-9_-]{3,15}$
    ^ # 行开始
    [a-z0-9_-] # 匹配列表中的字符,a-z,0–9,下划线,连字符
    {3,15} # 长度至少3个字符,最大长度为15
    $ # 行结束

    2. 密码正则表达式模式
    ((?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
    ( # 组开始
    (?=.*d) # 必须包含一个数字 0-9
    (?=.*[a-z]) # 必须包含一个小写字符
    (?=.*[A-Z]) # 必须包含一个大写字符
    (?=.*[@#$%]) # 必须包含一个列表中的特殊字符"@#$%"
    . # 检查所有字符串与前面的条件的匹配
    {6,20} # 长度至少为6个字符,最大长度为20
    ) # 组结束

    3. 16进制颜色代码正则表达式模式
    ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
    ^ # 行开始
    # # 必须包含一个"#"符号
    ( # 组#1开始
    [A-Fa-f0-9]{6} # 列表中的任意字符串,长度为6
    | # ..或者
    [A-Fa-f0-9]{3} # 列表中的任意字符串,长度为3
    ) # 组#1结束
    $ # 行结束

    4. Email 正则表达式模式
    ^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$
    ^ # 行开始
    [_A-Za-z0-9-]+ # 必须以中括号中的字符为起始字符[],必须包含一个或多个(+)
    ( # 组#1开始
    \.[_A-Za-z0-9-]+ # 接下来是一个点"."和中括号内的字符[],必须包含一个或者多个(+)
    )* # 组#1结束, 这个组是可选的(*)
    @ # 必须包含一个"@"符号
    [A-Za-z0-9]+ # 接下来是中括号内的字符[],必须包含一个或者多个(+)
    ( # 组 #2开始 – 一级TLD检查
    \.[A-Za-z0-9]+ # 接下来是一个点"."和中括号内的字符[],必须包含一个或者多个(+)
    )* # 组#2结束,这个组是可选的(*)
    ( # 组#3开始 – 二级TLD检查
    \.[A-Za-z]{2,} # 接下来是一个点"."和中括号内的字符[], 最小长度为2
    ) # 组#3结束
    $ # 行结束

    5. 图像文件扩展名正则表达式模式
    ([^s]+(.(?i)(jpg|png|gif|bmp))$)
    ( # 组#1开始
    [^s]+ # 必须包含一个或更多的任意字符(除了空格)
    ( # 组#2开始
    . # 接下来是一个点"."
    (?i) # 忽略后边字符的大小写检查
    ( # 组#3开始
    jpg # 包含字符"jpg"
    | # ..或者
    png # 包含字符"png"
    | # .. 或者
    gif # 包含字符"gif"
    | # .. 或者
    bmp # 包含字符"bmp"
    ) # 组#3结束
    ) # 组#2结束
    $ # 字符串的结束
    ) # 组#1结束

    6. IP地址正则表达式模式
    ^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.
    ([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$
    ^ # 行开始
    ( # 组#1开始
    [01]?\d\d? # 可以是1到2个数字. 如果出现3个数字, 必须以0或者1开始
    # 例如 ([0-9], [0-9][0-9],[0-1][0-9][0-9])
    | # ...或者
    2[0-4]\d # 以2开始, 紧跟着是0-4,并且以任意数字结尾(2[0-4][0-9])
    | # ...或者
    25[0-5] # 以2开始, 紧跟着是5,并且以0-5结尾 (25[0-5])
    ) # 组#1结束
    . # 接下来是点"."
    .... # 重复3次 (3x)
    $ # 行结束

    7. 时间格式正则表达式模式
    12-小时制时间正则表达式模式
    (1[012]|[1-9]):[0-5][0-9](\s)?(?i)(am|pm)
    ( # 组#1开始
    1[012] # 以10, 11, 12开始
    | # 或者
    [1-9] # 以1,2,...9开始
    ) # 组#1结束
    : # 接下来是一个冒号 (:)
    [0-5][0-9] # 接下来是0..5和0..9,意思是00到59
    (\s)? # 接下来是一个空格(可选)
    (?i) # 下面的检查不区分大小写
    (am|pm) # 接下来是AM或者PM24小时制时间正则表达式模式
    ([01]?[0-9]|2[0-3]):[0-5][0-9]
    ( # 组#1开始
    [01]?[0-9] # 以0-9,1-9,00-09,10-19开始
    | # 或者
    2[0-3] # 以20-23开始
    ) # 组#1结束
    : # 接下来是一个冒号(:)
    [0-5][0-9] # 接下来是0..5和0..9,意思是00到59

    8. 日期格式 (dd/mm/yyyy) 正则表达式模式
    (0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\d\d)
    ( # 组#1开始
    0?[1-9] # 01-09或者1-9
    | # ..或者
    [12][0-9] # 10-19或者20-29
    | # ..或者
    3[01] # 30, 31
    ) # 组#1结束
    / # 接下来是一个"/"
    ( # 组#2开始
    0?[1-9] # 01-09或者1-9
    | # ..或者
    1[012] # 10,11,12
    ) # 组#2结束
    / # 接下来是一个"/"
    ( # 组#3开始
    (19|20)\d\d # 19[0-9][0-9]或者20[0-9][0-9]
    ) # 组#3结束

    9. HTML标签正则表达式模式
    < ("[^"]*"|'[^']*'|[^'">])*>
    < # 以"<"标签开始
    ( # 组#1开始
    "[^"]*" # 只允许两个双引号成对出现-"string"
    | # ..或者
    '[^']*' # 只允许两个单引号成对出现- 'string'
    | # ..或者
    [^'">] # 不能出现单独的双引号、单引号和">"
    ) # 组#1结束
    * # 0次或多次
    > # 以结束标签">"结束


    10. HTML链接正则表达式模式
    HTML中的A标签正则表达式模式
    (?i)<a([^>]+)>(.+?)
    ( # 组#1开始
    ?i # 所有的检查区分大小写
    ) # 组#1结束
    <a # 以"<a"开始
    ( # 组#2开始
    [^>]+ # 除了(">")之外的任意字符,至少一个字符
    ) # 组#2结束
    > # 接下来是">"
    (.+?) # 匹配所有
    # 以"结束提取HTML链接正则表达式模式
    s*(?i)hrefs*=s*("([^"]*")|'[^']*'|([^'">s]+));
    s* # 可以以空格开始
    (?i) # 所有的检查是区分大小写的
    href # 接下来是一个"href"字
    s*=s* # 等号两边都允许空格,
    ( # 组#1开始
    "([^"]*") # 只允许2个双引号成对出现 - "string"
    | # ..或者
    '[^']*' # 只允许2个单引号成对出现 - 'string'
    | # ..或者
    ([^'">]+) # 或者不允许出现单独的单引号、双引号和">"
    ) # 组#1结束

    其他:

    http://blog.chinaunix.net/uid-20577907-id-1758770.html

    http://jingyan.baidu.com/article/54b6b9c038b84f2d583b47f7.html

    http://www.jb51.net/article/16829.htm

    http://www.jb51.net/article/31251.htm

  • 相关阅读:
    UVa12093
    UVa1631
    vue路由跳转的三种方式
    vue中的钩子函数(判断是否跳转页面)beforeEach
    vue中子组件向父组件传值方法?
    vue中对数组,对象的操作如下
    vue-router的beforeEach的使用?
    vue拦截器使用?
    vue中父子组件以及兄弟组件的传值情况?
    前端模块化?
  • 原文地址:https://www.cnblogs.com/garinzhang/p/regex_example_study.html
Copyright © 2020-2023  润新知