一、校验数字的表达式
1. 数字:^ [ 0 - 9 ] * $
2. n位的数字:^ \d{ n} $
3. 至少n位的数字:^ \d{ n, } $
4. m- n位的数字:^ \d{ m, n} $
5. 零和非零开头的数字:^ ( 0 | [ 1 - 9 ] [ 0 - 9 ] * ) $
6. 非零开头的最多带两位小数的数字:^ ( [ 1 - 9 ] [ 0 - 9 ] * ) + ( \. [ 0 - 9 ] { 1 , 2 } ) ? $
7. 带1 - 2 位小数的正数或负数:^ ( \- ) ? \d+ ( \. \d{ 1 , 2 } ) $
8. 正数、负数、和小数:^ ( \- | \+ ) ? \d+ ( \. \d+ ) ? $
9. 有两位小数的正实数:^ [ 0 - 9 ] + ( \. [ 0 - 9 ] { 2 } ) ? $
10. 有1 ~ 3 位小数的正实数:^ [ 0 - 9 ] + ( \. [ 0 - 9 ] { 1 , 3 } ) ? $
11. 非零的正整数:^ [ 1 - 9 ] \d* $ 或 ^ ( [ 1 - 9 ] [ 0 - 9 ] * ) { 1 , 3 } $ 或 ^ \+ ? [ 1 - 9 ] [ 0 - 9 ] * $
12. 非零的负整数:^ \- [ 1 - 9 ] [ ] 0 - 9 "* $ 或 ^ - [ 1 - 9 ] \d* $
13. 非负整数:^ \d+ $ 或 ^ [ 1 - 9 ] \d* | 0 $
14. 非正整数:^ - [ 1 - 9 ] \d* | 0 $ 或 ^ ( ( - \d+ ) | ( 0 + ) ) $
15. 非负浮点数:^ \d+ ( \. \d+ ) ? $ 或 ^ [ 1 - 9 ] \d* \. \d* | 0 \. \d* [ 1 - 9 ] \d* | 0 ? \.0 + | 0 $
16. 非正浮点数:^ ( ( - \d+ ( \. \d+ ) ? ) | ( 0 + ( \.0 + ) ? ) ) $ 或 ^ ( - ( [ 1 - 9 ] \d* \. \d* | 0 \. \d* [ 1 - 9 ] \d* ) ) | 0 ? \.0 + | 0 $
17. 正浮点数:^ [ 1 - 9 ] \d* \. \d* | 0 \. \d* [ 1 - 9 ] \d* $ 或 ^ ( ( [ 0 - 9 ] + \. [ 0 - 9 ] * [ 1 - 9 ] [ 0 - 9 ] * ) | ( [ 0 - 9 ] * [ 1 - 9 ] [ 0 - 9 ] * \. [ 0 - 9 ] + ) | ( [ 0 - 9 ] * [ 1 - 9 ] [ 0 - 9 ] * ) ) $
18. 负浮点数:^ - ( [ 1 - 9 ] \d* \. \d* | 0 \. \d* [ 1 - 9 ] \d* ) $ 或 ^ ( - ( ( [ 0 - 9 ] + \. [ 0 - 9 ] * [ 1 - 9 ] [ 0 - 9 ] * ) | ( [ 0 - 9 ] * [ 1 - 9 ] [ 0 - 9 ] * \. [ 0 - 9 ] + ) | ( [ 0 - 9 ] * [ 1 - 9 ] [ 0 - 9 ] * ) ) ) $
19. 浮点数:^ ( - ? \d+ ) ( \. \d+ ) ? $ 或 ^ - ? ( [ 1 - 9 ] \d* \. \d* | 0 \. \d* [ 1 - 9 ] \d* | 0 ? \.0 + | 0 ) $
二、校验字符的表达式
1. 汉字:^ [ \u4e00- \u9fa5] { 0 , } $
2. 英文和数字:^ [ A - Za - z0- 9 ] + $ 或 ^ [ A - Za - z0- 9 ] { 4 , 40 } $
3. 长度为3 - 20 的所有字符:^ . { 3 , 20 } $
4. 由26 个英文字母组成的字符串:^ [ A - Za - z] + $
5. 由26 个大写英文字母组成的字符串:^ [ A - Z ] + $
6. 由26 个小写英文字母组成的字符串:^ [ a- z] + $
7. 由数字和26 个英文字母组成的字符串:^ [ A - Za - z0- 9 ] + $
8. 由数字、26 个英文字母或者下划线组成的字符串:^ \w+ $ 或 ^ \w{ 3 , 20 } $
9. 中文、英文、数字包括下划线:^ [ \u4E00- \u9FA5A- Za - z0- 9_ ] + $
10. 中文、英文、数字但不包括下划线等符号:^ [ \u4E00- \u9FA5A- Za - z0- 9 ] + $ 或 ^ [ \u4E00- \u9FA5A- Za - z0- 9 ] { 2 , 20 } $
11. 可以输入含有^ % & ', ; = ? $\"等字符:[ ^ % & ', ; = ? $\x22] +
12. 禁止输入含有~ 的字符:[ ^ ~ \x22] +
三、特殊需求表达式
1. Email地址:^ \w+ ( [ - + . ] \w+ ) * @\w+ ( [ - . ] \w+ ) * \. \w+ ( [ - . ] \w+ ) * $
2. 域名:[ a- zA- Z0 - 9 ] [ - a- zA- Z0 - 9 ] { 0 , 62 } ( \. [ a- zA- Z0 - 9 ] [ - a- zA- Z0 - 9 ] { 0 , 62 } ) + \. ?
3. InternetURL:[ a- zA- z] + : / / [ ^ \s] * 或 ^ http: / / ( [ \w- ] + \. ) + [ \w- ] + ( / [ \w- . /? % &= ] * ) ? $
4. 身份证号( 15 位、18 位数字) ,最后一位是校验位,可能为数字或字符X :( ^ \d{ 15 } $) | ( ^ \d{ 18 } $) | ( ^ \d{ 17 } ( \d| X | x) $)
5. 帐号是否合法( 字母开头,允许5 - 16 字节,允许字母数字下划线) :^ [ a- zA- Z ] [ a- zA- Z0 - 9_ ] { 4 , 15 } $
6. 密码( 以字母开头,长度在6 ~ 18 之间,只能包含字母、数字和下划线) :^ [ a- zA- Z ] \w{ 5 , 17 } $
7. 强密码( 必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8 - 10 之间) :^ ( ? = . *\d) ( ? = . *[ a- z] ) ( ? = . *[ A - Z ] ) [ a- zA- Z0 - 9 ] { 8 , 10 } $
8. 强密码( 必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8 - 10 之间) :^ ( ? = . *\d) ( ? = . *[ a- z] ) ( ? = . *[ A - Z ] ) . { 8 , 10 } $
9. 日期格式:^ \d{ 4 } - \d{ 1 , 2 } - \d{ 1 , 2 }
10. 一年的12 个月( 01 ~09 和1 ~12 ) :^ ( 0 ? [ 1 - 9 ] | 1 [ 0 - 2 ] ) $
11. 一个月的31 天( 01 ~09 和1 ~31 ) :^ ( ( 0 ? [ 1 - 9 ] ) | ( ( 1 | 2 ) [ 0 - 9 ] ) | 30 | 31 ) $
12. 中国邮政编码:[ 1 - 9 ] \d{ 5 } ( ? ! \d) ( 中国邮政编码为6 位数字)
13. IPv4地址:( ( 2 ( 5 [ 0 - 5 ] | [ 0 - 4 ] \d) ) | [ 0 - 1 ] ? \d{ 1 , 2 } ) ( \. ( ( 2 ( 5 [ 0 - 5 ] | [ 0 - 4 ] \d) ) | [ 0 - 1 ] ? \d{ 1 , 2 } ) ) { 3 }
14. 校验车牌号:^ [ 粤湘鄂冀豫黑吉辽晋陕青鲁苏皖浙闽赣琼甘贵川港澳桂宁蒙新藏京津沪渝] { 1 } [ A - HJ - NP - Z0 - 9 ] { 6 , 7 } $
四、语法参考
. - 除换行符以外的所有字符。
^ - 字符串开头。
$ - 字符串结尾。
\d, \w, \s - 匹配数字、字符、空格。
\D , \W , \S - 匹配非数字、非字符、非空格。
[ abc] - 匹配 a、b 或 c 中的一个字母。
[ a- z] - 匹配 a 到 z 中的一个字母。
[ ^ abc] - 匹配除了 a、b 或 c 中的其他字母。
aa| bb - 匹配 aa 或 bb。
? - 0 次或 1 次匹配。
* - 匹配 0 次或多次。
+ - 匹配 1 次或多次。
{ n} - 匹配 n次。
{ n, } - 匹配 n次以上。
{ m, n} - 最少 m 次,最多 n 次匹配。
( expr) - 捕获 expr 子模式, 以 \1 使用它。
( ? : expr) - 忽略捕获的子模式。
( ? = expr) - 正向预查模式 expr。
( ? ! expr) - 负向预查模式 expr。
五、代码示例
public class Test { public static final String LETTER_PATTERN = "^.*[a-zA-Z]+.*$" ; public static final String NUMBER_PATTERN = "^.*[0-9]+.*$" ; public static final String SPECIAL_CHAR_PATTERN = "^.*[/^/$/.//,;:'!@#%&/*/|/?/+/(/)/[/]/{/}]+.*$" ; public static final String PW_LENGTH_PATTERN = "^.{8,16}$" ; public static void main ( String [ ] args) { matches ( "123" ) ; matches ( "123A" ) ; matches ( "12345678901234567" ) ; matches ( "123Aa0912@" ) ; } public static void matches ( String input) { System . out. println ( input+ ":" + input. matches ( LETTER_PATTERN ) + "-" + input. matches ( NUMBER_PATTERN ) + "-" + input. matches ( SPECIAL_CHAR_PATTERN ) + "-" + input. matches ( PW_LENGTH_PATTERN ) ) ; }
}
六、运行示例