为什么需要
传统验证方式过于繁琐,编写非常麻烦
简单模式
只能表示具体的匹配
示例:
var reg=/china/;
var reg=/abc8/;
复合模式
可以使用通配符表达更为抽象的规则模式
示例:
var reg=/^\w+$/;//正则表达式 /^ \w+ $/
var reg=/^\w+@\w+\.((com)|(cn)|(com.cn))$/;
jkjp@qq.com jkjkp2000@163.com.cn jkjkp@sina.cn
\w+ --》匹配 jkjkp
正则表达式/^\w?/ 未使用$符号结束 和有$区别
$代表以该正则表达式结尾的字符串例如
abc$只匹配123abc,rtyabc(表示要验证的数据必须以abc结束)
如果只是abc的话,那么123abc456,rtfabcfgh都可以匹配
加了^ 表示^后面的第一位字符必须匹配的字符串首位相同,不加的话任意顺序匹配。
var reg=/abc/; alert(reg.test("dcabca")); true var reg=/^abc/; alert(reg.test("dcabca")); false var reg=/^abc/; alert(reg.test("abcseda")); true var reg=/^abc$/; alert(reg.test("abcseda")); false
|
正则表达式符号
/…/ 代表一个模式的开始和结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\s 任何空白字符
\S 任何非空白字符
\d 匹配一个数字字符,等价于[0-9]
\D 除了数字之外的任何字符,等价于[^0-9]
\w 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]
\W 任何非单字字符,等价于[^a-zA-z0-9_]
.除了换行符之外的任意字符
{n,} 匹配前一项n次,或者多次( n<=)
{n,m} 匹配前一项至少n次,但是不能超过m次(n<= <m)
* 匹配前一项0次或多次,等价于{0,}(可有可无)
+ 匹配前一项1次或多次,等价于{1,} (至少有一个)
? 匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}(要么有要么只能出现一次)
正则表达式的应用
用户名、密码、电子邮箱、手机号码、身份证号码、生日、固定电话
常见正则
用户名:/^[a-zA-Z0-9_-]{3,16}$/
密码:/^[a-z0-9_-]{6,18}$/
年 19**|200*|201* 月 01~09|1* 日 1~9|10~29|30|31 2012-09-12 0?[1-9]
1998-08-13
出生日期:/^((19\d{2})|(200\d)|(201[0-7]))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/
电子邮箱:/^([a-z0-9_\.-]+)@([\da-z-]+)\.((com)|(cn)|(com.cn))$/
/^\w+@\w+\.((com)|(cn)|(com.cn))$/
jk@yahoo.com.cn
匹配国内电话号码:(\d{3}-\d{8})|(\d{4}-\d{7})
评注:匹配形式如 0511-4405222 或 021-87888822
匹配身份证:\d{15}|\d{18}
评注:中国大陆的身份证为15位或18位