1.什么是正则表达式
规则表达式
2.应用场景
表单的验证
3.正则的使用
定义:
1>字面量:var reg = / /;
2>构造函数 : var reg = new RegExp(' ');
************区别:new RegExp() -------> 可以放入变量
var str = 'abc';
var reg1 = /str/; //str
var reg2 = new RegExp(str); //abc
4.正则的方法
1>test() : 检测一个内容是否与正则匹配 如果匹配返回true 不匹配返回false
2>exec() : 检测一个内容是否与正则匹配 如果匹配返回数组 不匹配返回null
5.元字符
1> [ ] 匹配中括号内任意一个字符
案例 :验证手机号
var reg = /[abc]/;
var str = 'acd';
console.log( reg.test(str) ); //true
2> [^] 匹配除了中括号内的任意字符
var reg = /[^abc]/;
var str = 'acd';
console.log( reg.test(str) ); //true
3> [0-9] 匹配数字0-9之间的数字
[a-z] 匹配字母 a-z之间的小写字母
[a-zA-Z0-9] 匹配数字字母
*********可以修改范围 如:[3-9]
var reg = /[0-9]/;
var str = 'aa1';
console.log( reg.test(str) ); //true
4> \d 匹配数字
\D 匹配非数字
\w 匹配数字、字母、下划线 =====>[0-9a-zA-Z_]
\W 匹配非数字、字母、下划线
\s 匹配空格
\S 匹配非空格
\b 匹配边界
\B 匹配非边界
***********边界意为 左右为空格 或者 是第一个字符 或最后一个字符
如:class = 'aa bb cc'
. 匹配除了换行符以外的任意字符
6.转义(\)
/ . / =======> 匹配除了换行符以外的所有字符
/ \. / =========>只能匹配 .
7.选择符
| 或
作用:网站 / xxx.cn|cc|com |net/
8.修饰符
i : 不区分大小写
如:/a-z/i (匹配a-zA-Z) 或 RegExp('[a-z]','i')
g : 全文匹配
m (不常用)
9.字符串可以配合正则 一起用的方法
replace //str.replace(reg,'**');
match : 类似于exec =====>查找返回对应的值【值是数组】,没有返回null
*****支持全局 //str.match(reg) 返回数组,length为匹配到的个数
10.限定符
^ 以 ...开始
$ 以... 结束
作用:验证手机号 以数字1开始 ,以数字结束
11.重复
{ n } 重复n次
{n,} 重复最少n次
{n,m} 重复最少n次,最多m次
* 重复最少0次,最多不限
+ 重复最少1次,最多不限
? 重复最少0次,最多1次 //http(s)
****************补充事件 : oninput() //只要输入按键了就触发
12.贪婪模式
var reg1 = /\d{3,6}/g; //选取数字位数为6
13.非贪婪模式(懒惰模式)
var reg2 = /\d{3,6}?/g; //选取数字位数为3
14.分组
():把部分内容组合在一起
15.字符类:来获取分组内的内容
$1(第一个分组) $2(第二个分组) $3(第三个分组) ...
************前提:正则必须执行一次 必须要分组
var str = '2023-03-15';
var reg = /(\d{4})-(\d{2})-(\d{2})/;
console.log(str.replace(reg,'$1')); //2021
var str = '2023-03-15';
var reg = /(\d{4})-(\d{2})-(\d{2})/;
reg.test(str);
console.log(RegExp.$1,RegExp.$2,RegExp.$3); //2021 03 15
16.前瞻 (从左向右) 和 后顾 ============> 只是条件
正向前瞻 :(?=) ======> 匹配符合的
//正向前瞻 看一看\d数字后面是不是字母,是字母匹配到
var reg = /\d(?=[a-z])/g;
var str = '1a2b*%3cddd5';
console.log(str.replace(reg,'*')); //*a*b*%*cddd5
负向前瞻 :(?!) =======> 匹配不符合的
//负向前瞻 看一看\d数字后面是不是字母,不是字母匹配到
var reg = /\d(?![a-z])/g;
var str = '1a2b*%3cddd5';
console.log(str.replace(reg,'*')); //1a2b*%3cddd*
***********js正则没有后顾 :运行速度机制问题
17.补充
(\w)\1+ ========> \1匹配第一个()后面相同的内容 +表示匹配1个到多个