Javascript “替换”替换回退
Javascript `replace` Replacement Fallback
举个例子:
var tag_oh_so_alone_ = '[FieldName]',
tag_with_default = '[FieldName:The default value]',
the_regex = /'[([a-z]+)(':([^']]+))?']/i;
console.log(
"Results:'n",
tag_oh_so_alone_.replace(the_regex,"1: $1'n 2: $2'n 3: $3'n"),
tag_with_default.replace(the_regex,"1: $1'n 2: $2'n 3: $3'n")
);
控制台显示:
Results:
1: FieldName
2:
3:
1: FieldName
2: :The default value
3: The default value
我想做的是,在替换声明中(换句话说,我们包含"$1"等的地方),基本上指定:如果填充$3
,请使用$3
,否则使用 $1
。
预期输出如下:
tag_oh_so_alone_
=>FieldName
tag_with_default
=>The default value
这可能吗?
你可以将一个函数作为替换器传递给String.replace
,像这样
function replacer(match, p1, p2, p3) {
if (p3) {
return "1: " + p1 + "'n 2: " + p2 + "'n 3: " + p3 + "'n"
} else {
return "1: " + p1 + "'n 2: " + p1 + "'n 3: " + p1 + "'n"
}
}
console.log(
"Results:'n",
tag_oh_so_alone_.replace(the_regex, replacer),
tag_with_default.replace(the_regex, replacer)
);
这样,输出就变成了,
Results:
1: FieldName
2: FieldName
3: FieldName
1: FieldName
2: :The default value
3: The default value
在这里,p1
、p2
和p3
是实际匹配的组。如果未填充/匹配p3
,则将undefined
。您可以根据需要在replacer
函数中自定义函数的返回值。
相关文章:
- 什么是HTML5画布标记的回退
- 如何在XHTML中添加jQuery CDN回退
- 当CDN加载失败时,为字体添加一个本地CSS回退
- HTML5 视频的回退图像
- 同时使用回退和 JavaScript.什么是正确的方法
- Javascript “替换”替换回退
- jQuery CDN超时回退
- 悬停状态指针事件:无Javascript回退
- IE8 内联尝试的 SVG 回退
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- Javascript-用函数(包括参数)替换回调
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- 在 Node.js 中用 promise 替换回调
- HTML5视频回退/备份图像不合适..
- IE8 和控制台.log - 如果开发人员控制台未打开,则回退到存根
- 咕噜咕噜浏览器化 - 设置包含,回退路径
- Javascript动画回退
- 显示不受支持的文件格式的<视频>回退消息
- AngularJS 注入回退
- 检测并附加jQuery,如果没有加载纯Javascript和回退