您的位置:首页 > Web前端 > JavaScript

js-match,replace-强悍

2011-11-20 15:27 246 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: