Java正则表达式

2017/02/12 iteye

转自:http://hi.baidu.com/xu_yunan/blog/item/7ce5d93bb279d22c96ddd843.html

各种正则表达式实例

用户名

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

密码

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

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结束
$                       # 行结束 

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结束
$                            # 行结束 

图像文件

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

补充一个:[\\s\\S]*?([^\\/]*?\\.jpg) 

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)
$                  # 行结束 

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或者PM 

24小时制时间正则表达式模式

([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 

日期格式 (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结束 

HTML标签

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

HTML中的A标签正则表达式模式

(?i)<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结束

Search

    Table of Contents