正则表达式

正则表达式在我们做写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连续出现两次,可匹配errerrr
			

   

(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/

原文地址:https://www.cnblogs.com/lq625424841/p/6874912.html