正则表达式:用某种模式去匹配一类字符串的公式
定义方式:
1.构造函数方式:let reg = new RegExp('\d+',g)
2.字面量方式:let reg = /\d+/ (/写具体的正则表达式/)
常用方法:
1.test: 正则.test(字符串) ==>匹配成功ture/匹配不成功false
const str='abcd'
const reg = /b/ //去匹配字符串中是否有b
let isOk=reg.test(str)
alert(isOK)
2.search: 字符串.search(正则) ==>匹配成功返回索引号/匹配不成功返回-1
3.match: 字符串.match(正则) ==>匹配成功返回数组/匹配不成功返回null
4.replace: 字符串.replace(正则,新字符串) ==>匹配成功返回新的字符串
const str='abcd'
const reg = /b/ //去匹配字符串中是否有b
let newStr=str.replace(reg,'x') //把b元素替换成x
5.exec: 正则.exec(字符串) ==>匹配成功返回数组/匹配不成功返回null
常用元字符:
限定符:
连接符:
定位符:限定某些字符出现的位置
修饰符:
一、修饰符
g: global 全文搜索,不添加,搜索到第一个匹配停止
i: ignore case 忽略大小写,默认大小写敏感
m: multiple lines 多行搜索
二、用法:
var reg = /\bis\b/;
var str = "He is a boy, This is a dog.Where is she? ";
str.match(reg); 只匹配第一个,
正则后加g匹配所有的 var reg = /\bis\b/g;
转义符:
正则特殊转义符
\f 匹配换页符
\n 匹配换行符
\r 匹配回车符
\t 匹配制表符
\v 匹配垂直制表符
\\ 匹配\
\" 匹配 "
\' 匹配 '
Unix系统里,每行结尾只有“<换行>”,即”\n”;
Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即”\n”;
优先级顺序:
贪婪模式:
var str = 'a "witch" and her "broom" is one';
str.match( /".*"/g); //输出的结果为:a "witch" and her "broom"
非贪婪模式:加?,最小匹配规则,只要匹配到一个就结束
var str = 'a "witch" and her "broom" is one';
str.match(/".*?"/g ) // "witch", "broom"
分组:捕获组与非捕获组
1.捕获组:可以反向引用字符
匹配日期时间,分组后反向引用分组内容重组日期时间格式
const str = '2022-09-05'
const reg = /(\d{4})-(\d{2})-(\d{2})/
let newStr = str.replace(reg,'$2/$3/$1')
console.log(newStr)