通过正则表达式使用string.replace替换字符串
看到淘宝UED资料上有个实例,使用模板拼接字符串,json格式的数据如下:
JScript code
var json = {name: "流火", blog: "ued.t"};
想得到下面的效果:
流火 (blog: ued.taobao.com)
使用模板函数的方法为:
JScript code
function sub(str, data){
return str.replace(/{(.*?)}/igm, function($, $1){
return data[$1]?data[$1]:$;
});
}
var tpl = '{name} (blog: {blog})';
var html = sub(tpl, json);
我的问题是正则表达式中的那个句号. 及外面的小括号() 还有后面函数中的$都是什么意思?
------解决方案--------------------都是正则表达式的原字符,网上搜一下30分钟入门正则看看就知道了
------解决方案--------------------
. 小数点可以匹配除了换行符(\n)以外的任意一个字符
小括号() 表示分组捕获
$ 是取得匹配正则的字符
$1 取得 第一个分组捕获
楼主搜下 30分钟正则入门,看看先。。
------解决方案--------------------. 匹配出回车以外的任何字符
() 分组
function($, $1) 中 $ 是匹配模式的字符串,$1 是与第一个子表达式匹配的字符串