javascript 的perl类型的正则表达式

来源:互联网 发布:淘宝联盟领券链接 编辑:程序博客网 时间:2024/05/07 20:24

 

(1)var recat = new RegExp("cat");    //简单定义。

        var recat = new RegExp("cat","gi");//g->global,i->case insensitive.

        var recat = /cat/gi;                         //perl模式

 

(2)var sToMatch = "cat";

        var reCat = /cat/;

        alert(reCat.test(sToMatch));   //true

 

        var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";

        var reAt = /at/; 

        var arrMatches = reAt.exec(sToMatch); //只返回第一个at出现的实例,bat. 注意这里使用exec时,参数是原字符串

 

        var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";

 

        var reAt = /at/gi; 

        var arrMatches = sToMatch.match(reAt); //这里使用match时候,参数是正则表达式

 

        var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";

        var reAt = /at/gi;

        alert(sToMatch.search(reAt));                  //这里和indexOf()有些相似 ,输出3

 

(3)var sToChange = "The sky is blue. ";

        alert(sToChange.replace("blue","gray")); //output "The sky is gray. "

 

        var sToChange = "The sky is blue. ";

        var reRed = /red/;

        var sResultText = sToChange.replace(reRed,function(sMatch){         //这里replace()的第二个参数是一个匿名函数,该

              return "blue";                                                                               //匿名函数接受的参数sMatch表示匹配上的字符串。

        });

 

        alert(sResultText);

 

(4)var sColor = "red,blue,green,black";

        var arrColors = sColor.split(",");    

 

        var reComma = //,/;

        var arrColors = sColor.split(reComma);

 

(5)元字符:

        ( { [ / ^ $ | ) ? * + . ,

 

        var reQMark = //?/;

        var reQMark = new RegExp("//?");

 

特殊字符:

        var sColor = "blue";

        var reB = //x62/;          //ASCII码

        alert(reB.test(sColor));

 

        var sColor = "blue";

        var reB = //u0062/;     // unicode 的4位十六进制

        alert(reB.test(sColor)); //true,

 

其他的很多特性与perl的非常相似。

比如:量词 ? * +  {n} {n,m} {n,}

         贪婪 * + ? .*?与perl相同

         分组 

          


 

 

         反向引用

           (1) (A?(B?(C?)))

           (2) (B?(C?))

           (3) (C?)

 

        候选

 

 

         var color = "red";

         var reRed = /(red|black)/;

         alert(reRed.test(color));

 

         var replaceBadWords = /badword|anotherbadword/gi;

         var userInput = "This is a string using badword1 and badword2";

         var finalText = userInput.replace(replaceBadWords,"****");

 

        非捕获性分组

        ?:

        无法使用$1来进行捕获

        var reg = /(?:/d+)/;  //这里的$1为空

 

        前瞻(lookahead)

        var sToMatch1 = "bedroom";

        var sToMatch2 = "bedding";

        var reBed = /(bed(?=room))/;

        alert(reBed.test(sToMatch1)); //true

        alert(RegExp.$1);                  //bed

        alert(reBed.test(sToMatch2)); //false

 

        边界(^ $ /b /B),多行(m)

 

        实例属性(RegExp)

        global,ignoreCase,lastIndex,multiline,source(正则表达式的源字符串形式)

 

        静态属性

        $_(最后用于匹配的字符串,传递给exec(),test()的字符串),     (input)

 

        $&(最后匹配的字符)                                                            (lastMatch)

 

        $+(最后匹配的分组)                                                            (lastParen)

 

        $`(上次匹配的前面的子串)                                                   (leftContext)

 

        $*(指定所有的表达式使用多行模式的布尔值)                           (multiline)

 

        $' (上次匹配之后的子串)                                                      (rightContext)

 

 

        

        var sToMatch = "this has been a short, short summer";

        var reShort = /(s)hort/g;  

        reShort.test(sToMatch);

        alert(RegExp.input);                //"this has been a short, short summer"

 

        alert(RegExp.leftContext);       //"this has been a "

 

        alert(RegExp.rightContext);    //", short summer"

 

        alert(RegExp.lastMatch);        //"short"

        alert(RegExp.lastParen);        //"s"

        alert(RegExp.$_);

        alert(RegExp.["$`"]);

        alert(RegExp.["$&"]);...

 

        电子邮件的验证:

        /^(?:/w+/.?)*/w+@(?:/w+/.?)*/w+$/;

 

 

 

原创粉丝点击