正则表达式:RegEnts。专门验证字符串中字符出现的规则的定义规则,若不符合规则,提示错误。写在//中
/[备选字符]/
/[1,2,3]/ 表示输入1、2、3都对,一个[]只能代表一位字符的匹配规则,几位数就有几个[]。
例如手机号的匹配:
var reg=/[1][3456789][0123456789][0123456789][0123456789][0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]/
显而易见,这种形式的正则表达式实在是太麻烦了,进一步简化:正则表达式对任何连续的区间都可以用横线连接。
var reg=/[1][3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
对于后9位数字,是重复的,有没有规则做到相同的规则只需要写一次?那必然是有的:数量词写在{}中表示前一位规则重复多少次
var reg=/[1][3-9][0-9]{9}/
若想修饰多位规则,可以加小括号:
var reg=/[1]([3-9][0-9]){9}/; 此时表示的是19位数的正则表达式
{}表示规则重复次数的完整说明:{num},重复num次;{min,},至少重复min次;{min,max},至少重复min次,至多重复max次。
特殊数量词:
1. ? 代表前面一位规则可有可无,最多一次
2. * 代表前一位规则可有可无,不限次数,相当于{0,}
3. + 代表前一位至少出现一次,相当于{1,}
预定义字符集:
\d:代表所有数字,相当于[0-9];
\w:所有数字、字母、下划线,范围比\d更广;
\s:空格;
· (圆点):任意字符;
[]里若只有1位备选字符或只有一个预定义字符集,[]可以省略;
注意对于在正则表达式里有特殊含义的字符要想作为普通字符用,要用反斜线“\”转义。
综上,最终简化的手机号正则表达式为:
var reg=/1[3-9]\d{9}/
字符串的检验方法:test(),用来检验字符串格式是否正确,返回boolean值
reg.test("被检验的数据")
var reg=/1[3-9]\d{9}/
var num="18932785677";
if(reg.test(num)){
alert("成功!")
}else{
alert("手机号格式有误")
}
注意!test方法默认部分匹配,即找一段连续的能匹配的,前后是否多内容无影响,所以直接用test匹配可能会出现形式错误但匹配成功的情况。解决:在整个正则表达式的开头加^代表以……开头,在整个表达式的结尾加$,代表以……结尾
var reg=/^1[3-9]\d{9}$/
再写一个邮箱的正则表达式:
/^\w+@\w([-]\w+)*(\.\w+)+$/