正则是什么

正则表达式(RegExp),查找符合某些符合规则的字符串

正则的创建

第一种构造函数创建:let reg=new RegExp(‘匹配模式’,‘匹配特征’);
示例:let reg=new RegExp(‘a’,‘i’) 这个正则就是用来查找字符串中是否包含了字符串’a’,并且忽略大小写
第二种字面量式创建:let reg =/匹配模式/匹配特征;
let reg =/a/i;这个正则也是用来查找字符串中是否包含了字符串’a’,并且忽略大小写

注意:关于匹配特征,如果没有就可以省略
匹配特征主要有两个i和g.
i表示查找时,忽略大小写,g表示的是全局的意思.

正则的组成部分

正则由元字符,量词和特殊符号三部分组成.
详解这三个部分.
元字符:
\d表示任意数字 \D表示任意非数字
\w表示任意字母数字下划线 \W表示任意非字母数字下划线
\s表示任意空白字符 \S表示任意非空白字符
. 表示任意非换行字符
量词:
{n} 匹配前一项n次
{n,}匹配前一项至少n次
{n,m}匹配前一项至少n次,至多m次
*没有次数限制
?至多一次
+至少一次
特殊符号:
^匹配字符串的开始
$匹配字符串的结束
[ ]可匹配的列表
( )分组
| 或者
[^ ]匹配列表取非
示例:

let reg1=/^\w{10,20}$/;
//这个正则表示要匹配的对象只有10-20个,可以是任意字母数字下划线的字符
let reg2=/^[0-9a-zA-Z]{6,18}$/;
//这个正则表示要匹配的对象只有6-18个,可以是任意字母数字的字符
let reg3=/^[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[a-z]{2,4}$/
//这个正则表示邮箱的匹配,+表示至少一个,加号之前表示字符,[0-9a-zA-Z]+表示的是至少一个长度的字母数字组成字符串,后的@就表示目标字符串也在这个地方有个@,\.[a-z]{2,4},正则中.表示的任意非换行字符,但是我要的是目标中就有个点,需要用\进行转义,最后这个部分就是有2-4个小写字母组成.
let reg4=/^[ABC]$/;
//这个就是目标字符就是A或者B或者C

正则的方法

test()检测括号内的字符串是否符合要求,返回的是布尔值
exec()检测括号内的字符串是否有符合要求的项目,有的话返回的是符合正则标准的值组成的数组,没有的话返回的是null

//用上面创建的正则
reg4.test('A')  返回的是true
reg4.test('D')  返回的是false
reg4.exec('A')  返回的是['A']

字符串的正则方法

str.replace(/[A-Z]/g, item => '_'+item.toLowerCase())

将字符串中的所有大写字母转成下横加小写字母