• javascript 正则表达式


    在js中常用于字符串处理、表单验证、处理DOM模型、纯编程逻辑等。js中的正则表达式使用方式提供了两种:普通方式;构造函数方式。

      普通方式

      普通方式:var reg=/表达式/附加参数
      表达式:一个字符串,代表了某种规则,其中可以使用某些特殊字符来代表特殊的规则。
      附加参数:用来扩展表达式的含义,目前主要有三个参数:
        g:代表可以进行全局匹配。
        i:代表不区分大小写匹配。
        m:代表可以进行多行匹配。
      上面三个参数可以任意组合,代表符合含义,当然也可以不加参数。
      例如:
        var reg1=/[0-9]*b/;
        var reg2=/[a-z]+f/g;
        var reg3=/^[a-z]/i;
        var reg4=/^[a-z]/gm;

      构造函数方式 

      构造函数方式:var reg=new RegExp(“表达式”,”附加参数”);
      其中的表达式和附加参数和普通方式一样。
      例如:var reg1=new RegExp(“a|b”);
        var reg2=new RegExp(“[a-z]$”,”i”);

      普通方式的的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如:
        var value=“abc”;
        var reg=new RegExp(value,”i”);

      如下为js的其他部分元字符:

      1、表达式操作

      1 exec(str),返回str中与表达式相匹配的第一个字符串,而且以数组的形式表现,当然如果表达式中含有捕捉用的小括号,则返回的数组中也可能含有()中的匹配字符串,例如:
        var regx=/d+/; 
        var rs=regx.exec(“3432ddf53”); 
      返回的rs值为:{3432}
        var regx2=new RegExp(“ab(\d+)c”); 
        var rs2=regx2.exec(“ab234c44”); 
      返回的rs值为:{ab234c,234}

      另外,如果有多个合适的匹配,则第一次执行exec返回一个第一个匹配,此时继续执行exec,则依次返回第二个第三个匹配。例如: 
        var regx=/userd/g;
        var rs=regx.exec(“ddduser1dsfuser2dd”); 
        var rs1=regx.exec(“ddduser1dsfuser2dd”); 
      则rs的值为{user1},rs的值为{user2},当然注意regx中的g参数是必须的,否则无论exec执行多少次,都返回第一个匹配  

    2 test(str),判断字符串str是否匹配表达式,返回一个布尔值

    3 match(expr),返回与expr相匹配的一个字符串数组,如果没有加参数g,则返回第一个匹配,加入参数g则返回所有的匹配

    4 search(expr),返回字符串中与expr相匹配的第一个匹配的index值,例子

                  var regx=/userd/g; 
        var str=“user13userddduser345”; var rs=str.search(regx); 
      rs的值为:0

    5 replace(expr,str),将字符串中匹配expr的部分替换为str。另外在replace方法中,str中可以含有一种变量符号$,格式为$n,代表匹配中被记住的第n的匹配字符串(注意小括号可以记忆匹配),例子:

               var regx=/u(se)rd/g; 
        var str=“user13userddduser345”; var rs=str.replace(regx,”$1”); 
      rs的值为:se3userdddse45 

      对于replace(expr,str)方法还要特别注意一点,如果expr是一个表达式对象则会进行全局替换(此时表达式必须附加参数g,否则也只是替换第一个匹配),如果expr是一个字符串对象,则只会替换第一个匹配的部分,例如: 
        var regx=“user”; 
        var str=“user13userddduser345”; 
        var rs=str.replace(regx,”00”); 

    详细可看:https://www.cnblogs.com/zhuimengdeyuanyuan/archive/2013/02/06/2893420.html

  • 相关阅读:
    noip2011 总结
    noip2010 总结
    noip2009 总结
    noip2008 总结
    noip2006总结
    noip2007 总结
    noip2006 总结
    【模板】线段树模板
    【数学】8.30题解-count数页码
    【数论】8.30题解-prime素数密度 洛谷p1835
  • 原文地址:https://www.cnblogs.com/lvxisha/p/9629675.html
Copyright © 2020-2023  润新知