元字符 | 含义 |
---|---|
. | 表示任意一个字符 |
\s | 空格字符(空格键,tab,换行,换页,回车) |
\S | 非空格字符([^\s]) |
\d | 一个数字,(相当于[0-9]) |
\D | 一个非数字的字符,(相当于[^0-9]) |
\w | 一个单词字符(word character) (相当于[a-zA-Z_0-9]) |
\W | 一个非单词的字符,[^\w] |
^ | 一行的开始 |
$ | 一行的结尾 |
\b | 一个单词的边界 |
\B | 一个非单词的边界 |
[] | 匹配方括号内的一个字符 |
表示次数的元字符
元字符 | 含义 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n或更多次数 |
{n,m} | 重复n到m次 |
正则表达式,最重要的就是匹配规则的书写,其实正则表达式,并不难,只要对其组成的元字符有一定的了解,就比较简单了
正则表达式,是验证字符串的神器,学会了将很大的缩短字符串处理所需要的事件和代码量
正则表达式的书写时由元字符组成的
上面的表格就是部分常用元字符,及其含义。
我们就用常见的判断手机号码的正则表达式来看看:
public static boolean checkPhone(String phone) {
//其中compile的参数就是正则表达式的所要执行的匹配的规则
//前面小括号内别看有那么多东西,其实所匹配的数字只有3个
// | 符号的意思就是或即从其中寻找能匹配上的字符 我们来减少点说
//(13[0-9]|15[0-9]|153)
//比如 字符串 13[0-9] 这个字符串所匹配的是一个长度为3的字符 前两位必须是13 最后一位必须是0-9中的一个
//15[0-9]和上面的规则时一样的 而153就简单了 153 表示字符必须只能时153不能时其他的
//(13[0-9]|15[0-9]|153) 和起来就表示 一个字符串必须满足3个规则中的一个才时true否则就是false
//继续来看下面的规则
// 也就是说一个字符串的前三位必须满足下面8个规则中的一个
//后面的\\d{8}表示 \\d==\d 只是因为java中转义字符的原因所以才要多加一个
//上面的表格中已经写了 \d表示的时数字
//{8} 表示的是循环匹配8次
//总的 前面的3位数的匹配时验证 对应的电话号码段
//后面的8位必须是数字 这样加起来就对8+3=11 为电话号码的长度
Pattern pattern = Pattern
.compile("^(13[0-9]|15[0-9]|153|15[6-9]|180|18[23]|18[5-9]|17[37])\\d{8}$");
Matcher matcher = pattern.matcher(phone);
if (matcher.matches()) {
return true;
}
return false;
}
也可以用一下这种方式直接匹配正则表达式,返回值时boolean
new String().matches("^(13[0-9]|15[0-9]|153|15[6-9]|180|18[23]|18[5-9]|17[37])\\d{8}$");
当然我说的还不够详细,如果想看更详细的,请看下面链接:
http://baike.baidu.com/link?url=wSJQPNvPjvO8wtR-tJWI21FBizUGb8GO7YJwvl603MyJ17B6qif0jNaKtLxXSOKUDHd75UHE-KeE3S8mB3Vg6a
http://www.cnblogs.com/yirlin/archive/2006/04/12/373222.html
http://www.jikexueyuan.com/course/809.html
2017/04/20 16:11
js平台正则判断日期格式:
正确格式示例:2000/01/01 00:00:00
function checkDateTime(string) {
var check = /^(\d{4})[/][0-1]\d[/][0-3]\d\s[0-2]\d[:][0-5]\d[:][0-5]\d$/;
return string.match(check)
}
2017/08/17 09:36
匹配中文字符的正则表达式: [\u4e00-\u9fa5]