二,应用场景
表单的验证
三,正则的使用
定义:
字面量://
构造函数: new Regexp()
区别:
new Regexp():放入变量
四,正则的方法
test():检测一个内容是否与正则匹配
如果匹配返回true
否则返回false
exec():检测一个内容是否与正则匹配
如果匹配返回数组
否则返回null
元字符
元字符 []匹配中括号内任意一个字符 var reg1 = /[abc]/; [^]除了中括号内任意字符 var reg1 = /[^abc]/; [0-9]匹配0到9的数字/匹配单个数字/可以修改范围 var reg1 = /[0-9]/; [a-z][A-Z]匹配字母/区分大小写/可以修改范围 var reg1 = /[a-zA-Z]/; \d 匹配数字 \D 匹配非数字 \w 匹配数字,字母,下划线 ===> [a-zA-Z0-9_] \W 匹配非数字,字母,下划线 \s 匹配空格 \S 匹配非空格 \b 匹配边界 \B 匹配非边界
. 匹配除换行符以外的任意字符
转义()
/\./
本身失去原有的功能
一,选择符
|:或
二,修饰符
i:不区分大小写
g:全文匹配 全局
三,字符串方法可以配合正则去使用
replace() 替换 var str = 'a,b,c,a'; //加g表示全局 全部的a都替换 否则只替换第一个 console.log(str.replace(/a/g,'w'))
math(支持全局,字符串方法):类似与exec(正则方法) 查找返回对应的值,【值是数组】。没有找到返回Nnull
限定符
^ 以什么开始
$ 以什么结束
重复
{n} 重复n次 针对于前一个
{n,} 重复最少n次,最多不限
{n,m} 重复最少n次,最多m次
* 重复最少0次,最多不限
+ 重复最少一次,最多不限
? 重复最少0次,最多一次
贪婪模式
一,贪婪模式 /\d{3,6}/g; g 取最大值6 二,非贪婪模式(懒惰模式) /\d{3,6}?/g; ? 取最小值3 例子:var reg1 = /\d{3,6}?/g; var str1 = '12345678912345'; console.log(str1.replace(reg1,'*'))
一,分组
() : 把部分内容组合在一起
二,字符类:获取分组内的内容
$1 $2 $3 ... 前提:必须执行一次 必须要分组 var reg1 = /^(\d{4})-(\d{2})$/; var str1 = '2021-06'; console.log(str1.replace(reg1,'$2')); reg1.test(str1); console.log(RegExp.$2,RegExp.$1);
前瞻
正向前瞻:(?=):匹配符合的
//看一看 \d(数字)后面是不是字母,是的话匹配 var reg1 = /\d(?=[a-z])/g; var str1 = '1a2b*%3asd5'; console.log(str1.replace(reg1,'*')); //*a*b*%*asd5 负向前瞻:(?!):匹配不符合的 //看一看 \d(数字)后面不是字母的,不是的话匹配 var reg1 = /\d(?![a-z])/g; var str1 = '1a2b*%3asd5'; console.log(str1.replace(reg1,'*')); //1a2b*%3asd*
***jS正则没有后顾
//复杂密码 //可以有数字可以有字母,并且是3-6位 //必须有字母、必须有数字 //(?=.d):任意字符后必须是数字 //(?=.[a-z]):任意字符后必须是字母 var reg=/(?=.
\d)(?=.
a-z)[0-9a-zJ]{3,6}$/i; console. Log( reg.test(this value));
例子
//以字母a开头,后一位必须是数字 //字母a后面必须是一位数字 // var reg1 = /^a\d/; // var str1 = 'a1'; // console.log(reg1.test(str1)); var btn = document.getElementById('btn'), tel = document.getElementById('tel'); btn.onclick = function(){ //正则 //以1开头 第二位必须是3578中一位 剩下九位只能为数字 var reg = /^1[3578]\d{9}$/; if(reg.test(tel.value)){ alert('手机号正确'); }else { alert('错误'); } }