java中正则表达式的使用
定义
正则表达式(Regular Expression)就是用某种模式去匹配一类字符串的公式。
例子
目的:检查一段字符串是否符合163邮箱的要求(检查一段字符串是不是163邮箱)
要求:邮箱需要以字母开头,长度在6~18个字符,可使用字母 || 数字 || 下划线
正则:^[a-zA-Z]\w{5,17}@163.com
解释:
1. ^: 表示以什么开头
2. [a-zA-Z]: 表示从a~z || A~Z中的任一字符
3. \w: 表示单词字符,与[a-zA-Z_0-9]相同,即a~z || A~Z || 0~9的任一字符
4. {5,17}: 表示出现次数n,5≤n≤17
5. @163.com: 表示尾缀是163邮箱
java如何实现:
String regex = "^[a-zA-Z]\\w{5,17}@163.com";//这里需要转义字符
String testText = "test@163.com";
boolean isMatched = testText.matches(regex); //判断text是否符合regex规则
System.out.println(isMatched);
常用正则符号
正则 | 解释 |
---|---|
字符类 | |
[abc] | a或b或c |
[^abc] | 除了abc之外的任何字符 |
[a-zA-Z] | 从a~z或者从A~Z |
[a-d[m-p]] | a 到 d 或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] | d、e 或 f(交集) |
[a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
预定义字符类 | |
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
边界匹配器 | |
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词边界 |
\B | 非单词边界 |
\A | 输入的开头 |
\G | 上一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
\z | 输入的结尾 |
数量词(Greedy策略) | |
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
逻辑运算符 | |
XY | X 后跟 Y |
X|Y | X 或 Y |
(X) | X,作为捕获组 |
增加一组判断ip地址是否合法的正则:
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
转载请注明出处http://blog.youkuaiyun.com/zifeng1203s/article/details/44020159