1. 正则表达式声明
1.1 构造函数
通过构造函数的形式,来创建表达式
var reg=new RegExp(num);
返回值是一个对象,拥有两个方法
reg.test(被查询的字符串) 返回值
reg.exec(被查询的字符串) 返回值Array
第一个元素:是匹配到的字符串的首字符
第二个元素:是该字符串的首字母索引值
第三个元素:是输入的字符串
正则表达式既可以制定规则,也可以直接进行查找
1.2 字面量
var reg1=/\d/g;
两个参数
参数一 匹配的特征字符串
参数二 修饰字符串
使用构造函数的方法 创建正则表达式对象 可以传入变量 能动态修改表达式;使用字面量方法创建的是一个常量对象
2. 正则书写
2.1 精准匹配
var reg = /23/;
2.2 模糊匹配(通过元字符)
var reg1 = /\d/;
2.3 常用元字符
\d 一个数字字符
\D 一个非数字字符
\w 一个数字 字母 下划线 字符
\W 一个非数字 字母 下划线 字符
\s 一个空白符号
\S 一个非空白符号
. 匹配除换行符外的所有单个的字符
2.4 量词的控制
X{n} 匹配连续n个X
a{6} a连续出现6次
\d{6} 连续6个数字
X{n,m} 匹配最少出现n次 最多出现m次,满足最小条件开始匹配,到达最大条件,当次匹配结束
X{n,} 匹配最少n次 最多无上限
2.5 模糊个数
X? 匹配0个或者1个
等同于{0,1}
X* 匹配0个或连续多个 正则表达贪婪模式
等同于{0,}
X+ 匹配1个或连续多个
等同于{1,}
X*? 非贪婪模式
{n,m}? 只要有? 代表当前匹配尽量按照最小要求n匹配 但是也可以最多重复m次
?? 尽量匹配允许不满足条件 但是满足条件最多匹配一次 相当于{0,1}?
+? 尽量匹配一次 但是也可以匹配任意次 相当于{1,}?
*? 尽量不匹配 也可以匹配任意次 相当于{0,}?
2.6 分组
var s = '2021.10.12';
var s1 = '2021.11.12';
var reg0 = /2021.(10).(12)/;
console.log(reg0.test(s)); true
console.log(reg0.test(s1)); false
使用()可以对正则表达式进行分组操作
如果括号内匹配失败 返回false 整个正则表达式 直接返回false
2.7 其它
\/代表 字符 /
var s = '23/2';
var reg0 = /\//;
console.log(reg0.test(s));
g 全局匹配 写在//最后面 /\d/g 在全局范围内搜索符合要求的字符
有一个lastIndex属性 自动查找下一个
没有g 不管是exec() 还是match()都返回匹配到的第一个字符
有g
exec() 返回符合要求的第一个字符
match() 返回一个数组 数组内包含所有符合要求的字符
i 不区分大小写
m 多行
3. 正则验证
正则验证(正则表达式)Regular Ecpression 简写 regex regexp RE
1.描述了一种字符串的特征模型
2.返回值 是一个对象 通过该对象提供的方法和属性,能够对字符串进行匹配处理
3.查找字符串
4.既可以精准查找,也可以模糊匹配