zoukankan      html  css  js  c++  java
  • 字符串的模式匹配方法

    1.match()  本质上与调用RegExp的exec()方法相同。

     var text = "cat, bat, sat, fat";
        var pattern = /.at/;
        
        //与pattern.exec(text)相同
        var matches = text.match(pattern);
        console.log(matches.index);     //0
        console.log(matches.input);     
        console.log(matches[0]);        //"cat"
        console.log(pattern.lastIndex); //0

    2.search()  返回字符串中第一个匹配项的索引;没有则返回-1,始终从头查找。

        var text = "cat, bat, sat, fat",
            pos = text.search(/at/);
        console.log(pos);               //1

    3.replace()  替换字符串操作。接受两个参数。

    a.如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,唯一的办法是提供一个全局标志。

    var text = "cat, bat, sat, fat",
        result = text.replace("at", "ond");
    console.log(result);    //"cond, bat, sat, fat"
        
    result = text.replace(/at/g, "ond");
    console.log(result);    //"cond, bond, sond, fond"

    b.如果第二个参数是字符串,那么还可以加入一些特殊的字符序列。

    var text = "cat, bat, sat, fat";
    result = text.replace(/(.at)/g, "word ($1)");
    console.log(result);    

    c.第二个参数也可以是函数。

    • 在只有一个匹配项的情况下,会向这个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。
    • 在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依旧是模式的匹配项、第一个捕获组的匹配项、第二个......,但是最后两个参数依旧是不变的。
    function htmlEscape(text){
            return text.replace(/[<>"&]/g, function(match, pos, originalText){
                switch(match){
                    case "<":
                        return "&lt;";
                    case ">":
                        return "&gt;";
                    case "&":
                        return "&amp;";
                    case """:
                        return "&quot;";
                }
            })
        }
    
        console.log(htmlEscape("<p class="greeting"> Hello world! </p>"));
        //&lt;p class=&quot;greeting&quot;&gt; Hello world! &lt;/p&gt;

    4.  split()  这个方法可以基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是一个RegExp对象。

        var colorText = "red, biue, green, yellow";
        var colors1 = colorText.split(",");
        var colors2 = colorText.split(",","2");
        var colors3 = colorText.split(/[^\,]+/);
        console.log(colors1);   //["red", " biue", " green", " yellow"]
        console.log(colors2);   //["red", " biue"]
        console.log(colors3);   //["", ",", ",", ",", ""]
    
    /[^\,]+/  表示不是逗号的连续字符 

     

  • 相关阅读:
    Extjs4单选按钮
    下拉框comboxBox本地数据源示例
    处理您的请求时发生异常。此外,对第一个异常执行自定义错误页时发生另一异常。已终止请
    hoj1568
    hoj3434
    poj2924
    poj2909
    hoj3433
    理解Python闭包,这应该是最好的例子
    Spring 学习笔记
  • 原文地址:https://www.cnblogs.com/CZheng7/p/12616193.html
Copyright © 2011-2022 走看看