第3章 js中正则对象
正则对象两种定义方式:js中正则表达式两边不用加引号
var pattern = /[a-z]/;//将正则表达式直接当做对象使用。
var pattern = new RegExp(/[a-z]/);//实例化RegExp对象
1、test方法
test方法检测目标字符串和正则表达式是否匹配,如果匹配返回true,不匹配返回false。
正则表达式中,一般不需要加全局修饰符g。
var str = 'php1js22';
var pattern = /^[a-z]/;//以小写字母开头
var res = pattern.test(str);//匹配字符串是否以小写字母开头
console.log(res);//true
2、exec方法
exec方法执行一个正则匹配,只匹配一次,匹配到结果就返回一个数组类型的结果,匹配不到就返回null。
正则表达式中,一般不需要加全局修饰符g。
即使正则表达式中,使用了全局匹配修饰符g,也只匹配一次。
var str = 'php1js22';
var pattern = /[a-z]/;//匹配小写字母字符串
//var pattern = /[a-z]/g;//全局匹配小写字母字符串
var res1 = pattern.exec(str);
console.log(res1);//["p"] 只匹配一次,返回数组
3、lastIndex属性
表示正则表达式,上一次匹配结束后的位置(目标字符串中的索引),即下一次匹配开始的位置。
lastIndex是一个整数,。没有更多匹配重置lastIndex为0.
test 方法和exec方法默认都只匹配一次。匹配后lastIndex 被自动重置为0.
特殊情况:如果正则表达式使用了全局匹配修饰符g,则lastIndex不会被重置为0.
var str = 'php1js22';
//var pattern = /[a-z]/;//匹配小写字母字符串
var pattern = /[a-z]/g;//全局匹配小写字母字符串
var res1 = pattern.exec(str);
console.log(res1);//["p"] 只匹配一次,返回数组
console.log(pattern.lastIndex);//1 下一次匹配开始的位置
var res2 = pattern.exec(str);
console.log(res2);//["h"] //从位置1开始匹配
案例一
1、检测手机号格式
手机号特点:11位,纯数字,1开头, [23位号段,具体咨询各大运营商]
简单版(限制前两位):1开头,第二位3-9,后面9位数字
/^1[3-9]\d{9}$/
精确版(限制前三位):(如果出现新的手机号段,则不适用,需更新)
示例:
13[0-9]开头、14[579]开头、15[0-3,5-9]开头、166开头、17[0135678]开头、18[0-9]开头、19[89]开头
/^1(3[0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|8[0-9]|9[89])\d{8}$/
手机号检测案例:register.html
2、检测邮箱格式
邮箱特点:
2342.3s_-df@sina.com.cn
通用的邮箱的特点:
简单版:必须有@ 正则 /@/
精确版:
必须有@和.
@前面是邮箱名,要求至少一个字符,要求是数字、字母、下划线、[还可以用.-],但是开头必须是数字字母下划线
@和点之间:是一个域名,要求至少一个字符,可以是数字字母中横线,要求开头是数字或字母
点后面:要求是至少一个字符,必须是字母
点xxx,这部分可以出现一次,也可以出现多次
最后一个点后面,字符长度为2-6的字母
var pattern = /^\w[\w\.-]*@[0-9a-z][0-9a-z-]*(\.[a-z]+)*\.[a-z]{2,6}$/i;
register-email.html