. 表示除\n之外的任意单个字符
[] 字符的筛选,筛选中间的一个,如果加入^,表示不出现里面的字符
| 表示或地意思(优先级非常低a|bcd匹配a或者bcd,不匹配acd)
() 改变运算的优先级,提取组
* 限定符,表示前面的表达式出现0次或多次
+ 限定符,表示前边的表达式必须出现1次或者多次,至少出现1次
? 限定符,表示前边的表达式必须出现0次或者1次,最多出现1次;终止贪婪模式
{n} 限定符,限定前面表达式必须出现n次
{n,} 限定符,限定前边的表达式至少出现n次
{n,m} 限定符,限定前边的表达式至少出现n次,最多出现m次
^ 表示的是字符串的开头【不在[]中】
$ 表示字符串的结尾
\d 表示[0-9]
\D 表示[^0-9]
\s 表示所有那些空白符,不可见字符(换行符,制表符等)
\S 表示除了\s之外的所有字符
\w 表示[0-9a-zA-Z_]字母,数字,下划线
\W 表示除了\w之外的所有其他字符
\b 表示单词的边界(断言,只判断,不匹配)
表示任意单个字符:
[\s\S]
[\w\W]
[\d\D]
^a|b$:表示以a开头或者是以b结尾(因为|的优先级很低)
判断一个字符串是不是身份证号码:
1. 长度为15位或者18位的字符串,首位不能是0
2. 如果是15位,则全部是数字
3. 如果是18位,则前17为都是数字,末尾可能是数字也可能是X(大小写都有)
方法一:^[1-9]([0-9]{13} | [0-9]{16})[0-9Xx]$
方法二:^[1-9][0-9]{14}([0-9]{2}[0-9Xx])?$
判断字符串是否为正确的国内电话号码,不考虑分机:
1. 区号:3位或4位
2. 电话:7位或8位
3. 区号与电话中间的-可以没有,也可以出现1次
4. 或者所有的5位号码也是合法的
5. 所有的手机号码11位也是合法的
方法:^((\d{3,4}-?\d{7,8})|(\d{5}))$
注:由于前面包含了11位的电话号码,所以不用再填写
2015年5月22日
by:champly