关于 js 的replace函数

参考资料:http://www.cnblogs.com/whitewolf/archive/2013/03/14/2958720.html

看了破狼大大的这篇文章,感觉对replace也是有了新的认识。

主要是碰到这么一个编程问题,然后看到别人神奇的replace用法,就到处查了一下了解。

题目

获取 url 中的参数

  1. 指定参数名称,返回该参数的值 或者 空字符串
  2. 不指定参数名称,返回全部的参数对象 或者 {}
  3. 如果存在多个同名参数,则返回数组

见到的写法(自己稍微改了一点点。。

function getUrlParam(sUrl, sKey) {
	var result = {};
	sUrl.replace(/\??(\w+)=(\w+)&?/g, function(a, k, v) {
		// console.log(a, k, v, b, c, d);
		if(result[k]){
			result[k] = [].concat(result[k], v);
		} else {
			result[k] = v;
		}
	});
    if(!sKey){
        return result; 
    }else{
        return result[sKey] || '';
    }
}

下面copy参考文章中的一些总结:

第二个参数为字符串的时候:

对于正则replace约定了一个特殊标记符$
  1. $i (i:1-99) : 表示从左到右正则子表达式所匹配的文本。
  2. $& : 表示与正则表达式匹配的全文本。
  3. $` (`:切换技能键):表示匹配字符串的左边文本。
  4. $’ (‘:单引号):表示匹配字符串的右边文本。
  5. $$ :表示$转移。

第二个参数为函数:

在ECMAScript3推荐使用函数方式,实现于JavaScript1.2.当replace方法执行的时候每次都会调用该函数,返回值作为替换的新值。
函数参数的规定
  1. 第一个参数为每次匹配的全文本($&)。
  2. 中间参数为子表达式匹配字符串,个数不限.( $i (i:1-99))
  3. 倒数第二个参数为匹配文本字符串的匹配下标位置。
  4. 最后一个参数表示字符串本身。

posted on 2017-10-11 21:59  xfh0192  阅读(629)  评论(0编辑  收藏  举报

导航