开发过程中经常遇到字符串需要判断是否有非法字符的情况,比如密码不可以有特殊字符,长度不能少于几位等等的问题。
使用正则表达式进行判断比较方便,下面分享一些正则表达式的基础知识。
怎么读
要想读懂正则表达式,就要先了解正则字符的含义。
字符 | 含义 |
[0-9] [a-z] [A-Z] | 数字,大小写字母 |
. | 匹配任何字符(除\n以外) |
^ | 匹配字符串起始部分 |
$ | 匹配字符串终止部分 |
* | 匹配 0 次或者多次前面出现的正则表达式 |
+ | 匹配 1 次或者多次前面出现的正则表达式 |
? | 匹配 0 次或者 1 次前面出现的正则表达式 |
{N} | 匹配 N 次前面出现的正则表达式 |
{N,M} | 匹配 N~M 次前面出现的正则表达式 |
\d | 匹配任何十进制数字,与[0-9]一致 |
\w | 匹配任何字母数字字符 |
\s | 匹配任何空格字符 |
怎么写
上面整理了一些常见的正则字符,使用这些字符可以组成正则表达式。
例:
^[0-9]*$
匹配以数字开头,0个或多个数字组成,以数字结尾的字符串。
手机号正则表达式:
^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$
邮箱正则表达式:
^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$
怎么用
我是做java开发的,这里就说一下java开发中如何使用正则表达式。
下面是简单的验证手机号是否规范的代码
public class ZZTest {
public static void main(String[] args) {
String phone = "";
Pattern p = Pattern.compile("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}#34;);
Matcher m = p.matcher(phone);
System.out.println(m.matches());
}