Java - 正则表达式
正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)
正则表达式是对字符串操作的一种逻辑公式
一、正则表达式构造摘要
1、字符类
1 | [abc]`:肯定,`a`、`b` 或 `c |
[a-zA-Z]
:范围,a
到 z
或 A
到 Z
,两头的字母包括在内
2、预定义字符类
.
:任何字符(与行结束符可能匹配也可能不匹配)
1 | \d`:数字,`[0-9] |
3、POSIX 字符类(仅 US-ASCII)
\p{Lower}
:小写字母字符,[a-z]
\p{Upper}
:大写字母字符,[A-Z]
\p{ASCII}
:所有ASCII,[\x00-\x7F]
\p{Alpha}
:字母字符,[\p{Lower}\p{Upper}]
\p{Digit}
:十进制数字,[0-9]
\p{Alnum}
:字母数字字符,[\p{Alpha}\p{Digit}]
\p{Punct}
:标点符号,[!”#$%&’()*+,-./:;<=>?@[]^_`{|}~]
\p{Blank}
:空格或制表符,[ \t]
4、边界匹配器
^
:行的开头
$
:行的结尾
5、Greedy数量词
X?
:X,一次或一次也没有
X*
:X,零次或多次
X+
:X,一次或多次
X{
n}
:X,恰好 n 次
X{
n,}
:X,至少 n 次
X{
n,
m}
:X,至少 n 次,但是不超过 m 次
6、Logical运算符
XY:X 后跟 Y
X|
Y:X 或 Y
(
X)
:X,作为捕获组
7、特殊构造(非捕获)
(?:X) X,作为非捕获组
(?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?<=X) X,通过零宽度的正 lookbehind
(?<!X) X,通过零宽度的负 lookbehind
(?>X) X,作为独立的非捕获组
二、常见的正则表达式示例
- 验证用户名和密码,要求第一个字必须为字母,一共6~16位字母数字下划线组成:(^\w{5,15}$)
- 验证电话号码xxx/xxxx-xxxxxxx/xxxxxxxx:(^(\d{3,4}-)\d{7,8}$)
- 验证手机号码:( ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ )
- 验证身份证号: ( \d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)
- 验证Email地址:(^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$)
- 只能输入由数字和26个英文字母组成的字符串:(^[A-Za-z0-9]+$)
- 整数或者小数:(^[0-9]+(.[0-9]+){0,1}$)
- 中文字符的正则表达式:([\u4e00-\u9fa5])
- 金额校验(非零开头的最多带两位小数的数字):(^([1-9][0-9]*)+(.[0-9]{1,2})?$)
- IPV4地址:(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5])).){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 妙妙屋!