Java 正则表达式,
次数匹配符号
符号 |
次数 |
---|
? |
0次或者1次 |
* |
0次或者多次 |
+ |
1次或者多次 |
* + ? |
作用域为该符号前面的字符串 |
{n} |
精确为 n 次 |
{n,m} |
精确为 n 到 m 次 |
范围匹配符号
符号 |
描述 |
---|
^ |
行开头 注意:^ 在
中括号 开头位置,表示排除中括号内的字符。 |
$ |
行结尾 |
\b |
一个字符边界 |
\B |
一个非字符边界 |
\A |
输入的开始 |
\G |
结束前的匹配 |
\Z |
终端结束前的输入,如果有的话 |
\z |
最后的输入 |
常用符号的等价正则表达式
符号 |
等价的正则表达式 |
---|
\d |
[0-9] |
\D |
[^0-9] |
\w |
[a-zA-Z_0-9] |
\W |
[^\w] |
\s |
[\t\n\x0B\f\r] |
\S |
[^\s] |
^Hello |
开头要以 Hello 开始。如: Hello World |
meet you$ |
结尾要以 meet you 结尾。如:nice to meet you |
^BTW$ |
只有 BTW 符合要求 |
op? 或者 op{0,1} |
匹配以 o 开头 且 后面 不包含 p 或 包含一个 p 的字符串。如:o, op, open |
op* 或者 op{0,} |
匹配以 o 开头 且 后面可包含 p 或 包含多个 p 的字符串。如:o, op, open |
op+ 或者 op{1,} |
匹配以 o 开头 且 o 后面至少包含 一个 或 多个 p 的字符串。如:op, open |
o?p+$ |
匹配以一个 o 或不包含 o, 但至少以 p 结尾的字符串。如:p, op |
jk{2} |
匹配条件: j后面含有 2 个k 的字符串 |
jk{2,} |
匹配条件: j后面含有 2 个或 2 个以上个k 的字符串 |
jk{2,5} |
匹配条件: j后面含有 2 至 5 个 k 的字符串 |
jk(lmn)* |
匹配条件: jk 后面 没有 或 含有 1 个 lmn 的字符串 |
jk(lmn){1,5} |
匹配条件: jk 后面含有 1 - 5 个 lmn 的字符串 |
jack|tom |
匹配条件: 含有 jack 或 tom 的字符串 |
(hi|j)klmn |
匹配条件: 含有 hiklmn 或 jklmn 的字符串 |
(x|y)*z |
匹配条件: 含有 0 个 或多个 x 或 y, 并且 x 或 y 后面含有 z 的字符串 |
. |
可代表 除去 \n 以外
的任意一个字符 |
[\n.] |
包含 \n 的任意一个字符 |
[] |
中括号 只匹配 一个字符。如:[abc] 匹配单个
a, b 或 c 。 同义: a|b|c |
[a-g] |
匹配条件: a - g 单个字符。同义: a|b|c|d|e|f|g
或 [abcdefg] |
^[a-zA-Z] |
匹配条件: 以大小写开头的字符串 |
b.[0-9] |
匹配条件: b 后面含有一个除了 \n 以外的任意字符,并且任意字符后面含有一个 0-9 的阿拉伯数字 |
^.{3}$ |
匹配条件: 以三个任意字符串结尾 |
[0-9]% |
匹配条件: 如同 6%, 9% 的字符串 |
,[0-9a-zA-Z] |
匹配条件: , 加 数字或字母 结尾的字符串。 |
%[^a-zA-Z]% |
匹配条件: 在两个百分号之间匹配不含有字母的字符串。如:%1%, %123% |
[*\+?{}.] |
匹配条件: *\+?{}. 这些特殊字符在中括号内将失去特殊含义,匹配含有这些字符的字符串。 |
实例一:银行货币系统录入检查,录入的数字必须为正整数,单个及首个数字不能为零。查看源码 DemoOne.java
实例二:增加难度,银行货币系统录入检查,录入的字符必须为正数或正小数,单个字符不能为零。如果录入正小数,小数点之后必须含有至少一位数字。查看源码 DemoTwo.java
10/17/2011
实例三:邮件地址验证。查看源码 Email.java
分析(每个邮件提供商规则不同,这里所列的规则只局限于代码实现。):
-
邮件用户名位置不能以 _
或 ─ 或 . 开始。例如: -hello@example.com 不符合规则
-
用户名的字符数须介于 6 到 30 之间 (Gmail 规则)
-
域名名称前面含有 @
-
域名名称位置不能以 ─ 开始。
例如: hello@-example.com 不符合规则
-
域名名称后面含有 .
-
域名后缀字符个数为:2-4个。 例如: google.com,
google.cn,
google.mobi
10/18/2011
实例四:微数据(Microdata)挖掘。查看源码 Microdata.java
分析 (仅仅基础实现,URL转码,服务器状态核实不再本文讨论范围内。):
-
微数据(Microdata)就是向 HTML标签内部嵌入机读数据
-
该实例只匹配关键字 itemtype
-
并输出 itemtype 获取词汇 URL
参考资料:
-
Oracle Lesson: Regular
Expressions EN
用户点评