正则表达式

正则:检测字符串的一条规则。

Json的本质还是字符串,

正则的定义,简写 /规则/ 比如/456123/ 检测字符串必须包含45612

字符串和正则有关的方法。

match() 查找找到一个或多个正则表达式的匹配,有就返回查找的结果,没有就是null

语法,string.match(reg);

var str = "hello worid hello 1811 hello web";
var reg = /hello/ig;
var m = str.match(reg);
console.dir(m);

 

Search()查找与正则表达式相匹配的值,检索不到返回-1,检索到了,返回首次在字符串中的位置,

语法,string.search(reg);

Replace()在字符串中查找匹配的子串,并替换与正则匹配的子串

语法,string.replace(reg,newstring)

var reg = /(a)(b)/;
var str = "abdfgab"
var s = str.replace(reg,"$1");//$1是指分组引用中的第一个分组
console.log(s)

注意的

1,字符串中的,在正则中如果就代表一个,需要转意\.

/./代表任意一个字符,/\./代表一个.

2,正则对象的两个方法

test();检索字符串中的值,返回true或false

语法  reg.test(string);

esex();检索字符中指定的值,返回一个数组,有找到的值并确定其位置找不到返回null

语法reg.exec(string)

正则的特质

1,正则的懒惰性,

正则在捕获的时候,当第一次捕获成功了就直接返回,不在向下捕获,这就叫做正则的懒惰性,

解决正则的懒惰性,

在正则的后面加上修饰符/g

2,正则的贪婪性

/\d/去捕获一个字符串中的数字,他会尽可能多的捕获全部条件的,这叫正则的贪婪性。

 

解决正则的贪婪性,/\d+/  +代表1个或多个   ?代表0个或1个,在+后面跟一个? /\d+?/ 代表1个。

 

字符串检索,分两种结果,

第一种是查找型 查找到就终止,不会向下继续查找。

第二种是捕获型。分两种,第一是捕获首次出现的,第二种事捕获所有的。/g

分组捕获()这是分组捕获的标志,将大正则分组成几个小正则,在正则中,\1代表第一个分组,\2代表第二个分组。

比如  /(a)(b)\1\2/代表的abab这个规则。

在分组捕获中

var reg = /(a)(b)/;
// abab
var str = "abab";

 

结果既返回了大正则的捕获结果,也返回了小正则的捕获结果

如果不想捕获某一个分组中的内容,在对应的分组中前面加上?:就可以了,同时分组引用(\1\2)也失效了

 

一旦分组捕获成功,会在正则的类上会给$1,$2赋值。

RegExp.$1也是分组引用 ,也能在正则外起作用。

\1,也是分组引用,只能在正则中起作用

preg_match()执行一个正则表达式匹配

参数1是reg 参数2是string  返回值是0或1,查到就是1,查不到就是0.

Preg_match_all()执行一个全局正则表达式匹配

参数1是reg 参数2是string,返回值是0和nn是查找到的总次数,0是没有查到

Preg_replace()指向一个正则表达式的替换,

参数1是reg  参数2是newstring  参数3是检索的string,返回值是替换后的新的字符串。

 

第三个参数还可以是数组,返回值也是数组

Perg split

参数1是reg 参数2是string,

posted @ 2019-08-22 08:12  _魔鬼在人间  阅读(185)  评论(0)    收藏  举报