JavaScript 正则

Posted qq1137674424

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 正则相关的知识,希望对你有一定的参考价值。

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

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 正则的主要内容,如果未能解决你的问题,请参考以下文章

javascript正则表达式

JavaScript之基础-10 JavaScript 正则表达式(概述定义正则RegExp对象用于模式匹配的String方法)

JavaScript中的正则表达式

JavaScript 中使用正则表达式

javascript JavaScript正则表达式

javascript Javascript正则表达式输入限制