iamlaosong文
最近学了一下正则表达式,正则表达式说起来很复杂,似乎很难记,其实总结起来也就三点,一个是匹配符,另一个限定符,最后就是特殊符号。记住下面三点,正则表达式不说会写,一些简单的起码会看了。
1、匹配符表示一个字符匹配情况
如具体的字符,\d表示数字,\w表示字母数字和下划线和数字,.(点)表示任意字符,\s表示空白符如空格和制表符,\t表示制表符等。
[]中括号中可以列举可能出现的字符,如[0-9],[a-z],[+-.],中括号中的字符就是具体的字符,没有特别含义。
2、限定符表示前面匹配符的匹配程度
+表示匹配至少1次,*表示任意次包括0次,?表示匹配0次或1次。
{n,m}这种形式表示至少匹配n次,最多m次,m不写表示不限定最大次数。
上面的匹配都可以用这种形式表示,比如+={1,}、*={0,}、?={0,1},只是上面的形式比较简单而已。
3、特殊符号
^表示开头,$表示结尾,|表示或,即竖线两边的值可以任选一边。
()用于分组,括号中的值表示一种匹配模式,括号外可以跟限定符表示匹配程度。
===================================
最后,用几个常见的表达式案例说明上面的小结:
1 .校验身份证号码
下面是身份证号码的正则校验。15 或 18位。
15位:
^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
18位:
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$
2. 校验日期
“yyyy-mm-dd“ 格式的日期校验
10位:^\d{4}-\d{2}-\d{2}$
考虑到首位是0可以不写的话:^\d{1,4}-\d{1,2}-\d{1,2}$
复杂一点,按上面身份证上的日期匹配方法:
^\d{4}-((0\d)|(1[0-2]))-(([0|1|2]\d)|3[0-1])$
3. 校验金额
金额校验,精确到2位小数。
^[0-9]+(.[0-9]{2})?$
4. 校验手机号
下面是国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
5. Email地址
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
网上有很多现成的表达式,可以对照着看。