码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 正则

时间:2019-08-22 11:13:04      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:news   orm   引用   直接   ring   info   对象   inter   找不到   

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

Json的本质 还是字符串

1.正则的定义:简写 :/规则/ 比如 /45613/ 检测字符串必须有45613

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

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

语法:string.match(reg)

 

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

语法:string.search(reg)

 

Replace():在字符串中查找匹配的字串,并替换与正则表达式匹配的字串,如果检索到 返回替换后的新字符串,如果没有检索到 返回原字符串。

语法:string.replace(reg(查找的内容),newstring(替换))

 

注意的:

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

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

 

字符串检索 分两种结果

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

第二种是捕获型:捕获型分两种:

第一种是捕获首次出现的

第二种是捕获所有的 (和/g有关)

 

正则对象的两个方法

Test():检索字符串中的值,检索到返回true,检索不到false

语法:reg.test(string)

Exec():检索字符串中指定的值,返回值是一个数组,

有找到的值并确定其位置,找不到返回null

语法:reg.exec(string)

 

 

正则的性质:

1、正则的懒惰性:

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

  解决正则的懒惰性:

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

2、正则的贪婪性:

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

技术图片

 

 

 解决正则的贪婪性

          / \d+ / +代表1个或多个数字

                ?代表0个或1个

 

      在+后面跟一个? / \d+? /  取一个

  var str = "hello 456";

  // var reg = /\d+/g; //456

  var reg = /\d+?/g; //4

  var s = reg.exec(str);

  console.log(s);

 

分组捕获

():这是分组捕获的标志

将大正则分组成几个小正则 在正则中\1 代表第一个分组 \2代表第二个分组

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

在分组过程中

 

  var reg = /(a)(b)\1\2/;

 

  // 将大正则分成两个小正则

 

  // 一个是/a/ 一个是/b/

 

  // \1代表第一组 \2代表第二组

 

  var str = "abab";

 

  var s = reg.exec(str);

 

  console.log(s);

 

 

 

在分组捕获中 即返回了大正则的捕获结果,也返回 了小正则的捕获结果

如果不想捕获某一个分组中的内容 在对应的分组中的前面加上?:即可

 

同时分组引用(\1\2)也失效

 

    var reg = /(a)(?:b)\1/

    var str ="abab";

    console.log(reg.exec(str)); aba    a

  

    var reg = /(a)(b)/;  //ab  a b

    var str = "aabb";

    // var str = "ccdd"    //null 捕获不成功

    var s= reg.exec(str);

    console.dir(EegExp);

    console.log(s)

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

 

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

 

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

在分组捕获中 即返回了大正则的捕获结果,也返回 了小正则的捕获结果

如果不想捕获某一个分组中的内容 在对应的分组中的前面加上?:即可

同时分组引用(\1\2)也失效

JavaScript 正则

标签:news   orm   引用   直接   ring   info   对象   inter   找不到   

原文地址:https://www.cnblogs.com/qq1137674424/p/11392710.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!