jsmatch,replace强悍 简单

js中字符串的方法,仔细使用才发现十分强悍:

备注:此处只谈跟正则有关的使用) 

1. match

  在match后:

   若不匹配: 返回null

   若匹配:返回数组(如果正则包含“g”,数组元素分别为匹配的字符串; 如果不包含,则返回首次匹配的子字符串,以及属性input和index)

2. replace (超级强大)

 使用replace,有两个参数,第一个使用正则,第二可使用单独的字符串或者函数(如下详谈函数有关的使用)

使用函数:

 第一个参数表示匹配的子字符串,第二个,第三个。。。表示跟分组有关的子字符串(没有分组,则忽略这些参数),后面还带有匹配的子字符串的下标、最后是原始字符串。

看示例:

//分别测试多个示例

function test2() {

    var s1 = "javascript";

    s1 = "abc123adfjk-Ljdfjk_dfa";

    s1 = " this is a very good day, and it's very wanderful.";

//    s1 = "张三73分,李四99分,王五59.5分,赵六19.5分。";

    console.log(s1);

    var s2 = s1.replace(/(java)(script)/, "$2-$1");

    var s2 = s1.replace(/\W/g, "*");

    var s2 = s1.replace(/(\b\w+\b)/g, f1);

//    var s2 = s1.replace(/\b(\w)(\w+)\b/g, f2);

//    var s2 = s1.replace(/\d+(\.\d)?/g, f3);

    function f1($1) {

        console.log(arguments);

        return $1.charAt(0).toUpperCase() + $1.substring(1, $1.length);

    }

    function f2($1, $2, $3) {

//        console.log($1, $2, arguments);

        return $2.toUpperCase() + $3;

//        console.log(arguments, f2.length);

    }

    function f3($1) {

    }

//    var s2 = s1.replace(/^[a-zA-Z]/g, "*");

    console.log(s2);

}

test2();

//match和replace的综合使

function test2_1() {

    var s = "张三73分,李四99分,王五59.5分,赵六19.5分。";

    var re = /\d+\.?\d*/g;

    var arr = s.match(re);

    var avg = 0;

    for(var i = 0, n = arr.length; i < n; i++) {

        avg += parseFloat(arr[i]);

    }

    avg /= i;

    var result = s.replace(re, func);

    function func($1) {

        return $1 + "(平均分:" + avg + ",相差:" + (avg - parseFloat($1)) + ")";

    }

    console.log(arr, avg, result);

}

//test2_1();

//单独测试match方法

function test3() {

    var s = "ab12cdd12_dd2fad_dfae1234 dd";

    var re = /\d+/;

    var arr = s.match(re);

//    console.log(arr);

    for(var p in arr) {

        console.log("p", p, arr[p]);

    }

}

//test3();

原文地址:https://www.cnblogs.com/chyong168/p/2256172.html