正则表达式在我们做写js逻辑判断的时候常常用到。和大家分享一下,有什么问题可以私密我。
首先是正则表达式的声明。
var str = 'dKJd6DKj69ds dklj6dLL/SE659lds';
var reg = /d/; //这种声明方法一定要将两个"/"分开来,在两个"/"之间写的是检索的内容,类似于我们引号的写法;
var reg=new RegExp('d');
//正则表达式也可以看作是一个对象;
方法的使用:
console.log(reg.test(str)); //test()方法,返回值为boolean值, "字符串".test(reg);
console.log(reg.exec(str)); //用来检索字符串中指定的值,返回的结果如果能找到指定的值,那么结果就是我们检索的字符串,如果找不到,返回的结果为null;
console.log(str.match(reg));//match()方法,返回值为匹配的数组对象。使用typeof()检测类型为object。
//同时可以使用console.log(str.match(reg)[0])得到对应的值,可以看出匹配到的类型是数组类型。
正则表达式的类型(参数的使用)
(1)正则表达式的参数常用的有两个,分别是i和g;
i :表示的是不区分大小写的匹配;
g :表示的是全局匹配;
var reg = /d11/gi;
var reg1=new RegExp('d','gi');
//多个参数一起使用,参数与参数之间是可以直接连写,不需要用其他的字符来分隔的;
(2)search()
var part = /hello/gi;
var str = 'charles,hello,hello,world!';
console.log(str.search(part));
//search()方法:查找检索的字符串在原字符串中的位置,返回的结果是一个数值,如果存在,则返回具体的位置,如果不存在,则返回值-1;这与我们前面学的内置对象中的字符串对象的indexOf()方法一致;记住是从第0个开始算的
(3)replace()
var reg = /d/gi; //所有数字
console.log(str.replace(reg,"#"));
//替换对应规则的字符串为#
(4)[]表示在这个范围内
var reg = /[d-k]/gi; //表示字母d到k之间的字符,同时也支持数字如 [0-9]
var reg = /[^d-k]/gi; //^表示不包含
var reg = /[djkp]/gi; //表示指定的字符串
(5)|表示或者的意思,不是||哦
var reg = /[d]|[k]/gi;
(6).号只能代替一个字符;
var reg = /d.jd/gi; //搜索d*jd字符串
(7)$ 表示以什么结尾,^表示以什么开头
var reg = /4$/gi; //表示以4结尾的字符串
var reg = /^4/g; //表示以4开头,与其他的如[^4-8]就表示非的意思,非4到8的区间
var reg = /[^4]/g //在[]里面^代表非
var reg = /er+/gi; //+,*表示r出现一次或者一次以上,想要表示[er]
var reg=/er{2}/gi //表现r连续出现两次,可匹配err,errr
(8) ?
首先要知道什么是贪婪模式,如果/4+/g表示匹配出现一次或者一次以上的4,匹配字符串'45544554445',结果有3个,加问号/4+?/g,他就没那么贪婪,能短的就短了,结果就有7个了。
当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
(9)
w表示的是查找单词字符;而W表示的是查找非单词字符;
d表示的是查找数字;D表示查找非数字;
s表示的是查找空白字符;S表示查找非空白字符;
表示的是匹配单词边界;B表示匹配非单词边界;
(10) var s='1112131415';
(?:) 表示匹配但不获取结果集 /1(?:1|2|3)/g 匹配11、12、13但是不显示结果1112131415
(?=)表示匹配固定的模式结果 /1(?=1|2|3)/g 匹配11、12、13显示结果1112131415
(?!) 表示匹配非固定模式结果 /1(?!1|2|3)/g 不匹配11、12、13显示结果 1112131415
(11)、*,{n,m}
*表示出现0次或者以上,{n,m}代表出现n次以上,m次以下,{n}表示出现n次或者以上
(12)、括号()
表示在 .. 内
(13)、正则调试工具:
https://regex101.com/