您的位置:首页 > 其它

十个应该知道的正则表达式例子

2012-03-12 15:39 225 查看
正则表达式是一个编程的艺术,很难调试,学习和理解,但强大的功能,仍吸引不少开发者编写正则表达式。让我们探索一下下面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-]+(+%29%2A%40[a-za-z0-9]+%28//.[A-Za-z0-9]+)*(//.[A-Za-z]%7B2,%7D)$]\\.[_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检查

%7B2/]\\.[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结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: