思维导图
①字面量写法
var expression = /pattern/flags; pattern指的是匹配规则
test()校验匹配规则是否符合,对为true,错是false
//1.字面量写法
var str = 'mjj';
var p= /mjj/g;//g全局搜索
console.log(p.test(str));
②构造函数写法
RegExp(‘pattern’,‘flags’);
//2.构造函数写法 RegExp(pattern,flags)
var str2='pptlll';
var p1=new RegExp('ppt','g');
console.log(p1.test(str2));//true 因为str2中存在ppt这一截
元字符
-
(’.’)匹配所有的字符
-
^ $ 位置字符
^ 匹配字符串开始的位置
$ 匹配字符串结束的位置 -
匹配数字和字母(/w和/W)
/w 匹配数字和字母
/W 匹配非数字和非字母 -
匹配数字和非数字(/d和/D)
/d数字
/D非数字 -
匹配空白字符(/s和/S)
/s空白字符
/S非空白字符
字符集合
-
匹配里面的任意字符[]
eg:[a-zA-Z0-9]
-
匹配中文[\u4e00-\u9fa5]
-
匹配除字符集以外的所有字符[^]
eg:[^a-z]
-
匹配一次或多次 +
eg:/mj+/g , /[mM][jJ]+/g
-
匹配0次或多次 *
eg:/[mM]+[#\$%%\$&\(&@}\)]*/g 元字符前需要写转义字符
-
匹配0次或1次 ?
eg:/[mM]+y?[#\$%%\$&\(&@}\)]*/g
-
分组匹配 ()
-
或者 |
-
分组匹配不捕获 ?:
捕获方法:RegExp.$1
-
正向肯定预查 ?=
eg:?=元 表示肯定是元,但不匹配
-
正向否定预查 ?!=
eg:?!=元 表示肯定不是元,不匹配
-
反向肯定预查 ?<=
eg:?=¥ 表示肯定是¥,但不匹配
-
反向否定预查 ?<!=
eg:?!=¥ 表示肯定不是¥,不匹配
正向写在后面,反向写在前面
-
输入密码之类的最多个数和最少个数
eg:/\d{4,8}/g 密码个数在4~8的数字之间
正则实例对象的方法
test()
返回一个布尔值,表示当前模式是否能匹配参数字符串
exec()
用来返回匹配的结果,如果发现匹配,就返回一个数组,数组中的成员都是匹配的子字符串,
否则返回null
字符串方法
match()
对字符串进行正则匹配,返回匹配的结果
serach()
返回第一个满足条件的匹配结果在整个字符串中的位置。如果没有任何匹配,则返回-1.
replace()
可以替换匹配的值。他接受两个参数,第一个是正则表达式,表示匹配模式,第二个是替换的内容
正则表达式实例
1.验证用户账号
检查用户账号
规则:由字母,数字,下划线组成,以字母开头,4-16位
function checkUser(str){
// 模式
var re=/^[a-zA-Z]\w{3,15}$/g;
if(re.test(str)){
return '对';
}else{
return '错';
}
}
console.log(checkUser('wdivgf_3geg22'))
2.验证手机号
规则:11位,以1开头 3 5 7 8
function checkMobile(str){
var re=/^1[3|5|7|8|9]\d{9}/g;
if(re.test(str)){
alert('对') ;
}else{
alert('错') ;
}
}
checkMobile('15578320987');
3.匹配电话号码
规则:区号+号码
function checkPhone(str){
var re=/^0\d{2,3}-?\d{7,8}$/g;
if(re.test(str)){
console.log('匹配正确') ;
}else{
console.log('匹配错误') ;
}
}
checkPhone('0731-8977777');
4.匹配身份证号
规则:18位或者15位,15位全是数字 18位 前17位都是数字最后一位可能是数字或者字符x X
function checkIdcard(str){
var re=/^(\d{15}$)|(^\d{18}$)|(^\d{17}(\d|x|X)$)/g;
if(re.test(str)){
console.log('身份证合法') ;
}else{
console.log('身份证不合法') ;
}
}
checkIdcard('430124198803227564');
5.匹配邮箱
规则:第一部分@ 第二部分.com|cn|net
function checkEmail(str){
var re = /^[a-zA-Z0-9-._]+[@][a-zA-Z0-9-._]+\.(com|cn|net)$/g;
if(re.test(str)){
console.log('输入邮箱格式正确') ;
}else{
console.log('输入邮箱格式错误') ;
}
}
checkEmail('23467dnf@qw.cn');