zoukankan      html  css  js  c++  java
  • 10个你应该知道的Java正则表达式的例子

    正则表达式是一个编程的艺术,很难调试,学习和理解,但强大的功能,仍吸引不少开发者编写正则表达式。让我们探索一下下面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([^>]+)>(.+?)</a>
    ( # 组#1开始
    ?i # 所有的检查区分大小写
    ) # 组#1结束
    <a # 以"<a"开始
    ( # 组#2开始
    [^>]+ # 除了(">")之外的任意字符,至少一个字符
    ) # 组#2结束
    > # 接下来是">"
    (.+?) # 匹配所有
    </a> # 以"</a>结束提取HTML链接正则表达式模式
    \s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+));
    \s* # 可以以空格开始
    (?i) # 所有的检查是区分大小写的
    href # 接下来是一个"href"字
    \s*=\s* # 等号两边都允许空格,
    ( # 组#1开始
    "([^"]*") # 只允许2个双引号成对出现 - "string"
    | # ..或者
    '[^']*' # 只允许2个单引号成对出现 - 'string'
    | # ..或者
    ([^'">]+) # 或者不允许出现单独的单引号、双引号和">"
    ) # 组#1结束

  • 相关阅读:
    【React Native】某个页面禁用物理返回键
    【React Native】DeviceEventEmitter监听通知及带参数传值
    转载【React Native代码】手写验证码倒计时组件
    【React Native】 中设置 APP 名称、应用图标、为安卓添加启动图
    【React Native错误集】* What went wrong: Execution failed for task ':app:installDebug'.
    【React Native错误集】Import fails with "Failed to execute 'ImportScripts' on 'WorkerGlobalScope'"
    【React Native错误集】Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of app
    「React Native笔记」在React的 setState 中操作数组和对象的多种方法(合集)
    【React Native】Error: Attribute application@allowBackup value=(false) from AndroidManifest.xml
    坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?
  • 原文地址:https://www.cnblogs.com/123a/p/3045028.html
Copyright © 2011-2022 走看看