87,923
社区成员
发帖
与我相关
我的任务
分享
//没办法喽..但有特定环境,正向预搜索可以基本搞定...
<script type="text/javascript">
<!--
var s = "This is a {0}, test {{0} {1}.";
var reg = /[^{](?=\{0\})\{0\}/; //这样也不能算特例其实,,
alert(s.match(reg))
//-->
</script>
<script type="text/javascript">
<!--
var s = "This is a {0}, test {{0} {1}.";
var reg = /\s(?=\{0\})\{0\}/
alert(s.match(reg))
//-->
</script>
//参考提供的网址修改一下
var s = "This is a {0}, test {{0} {1}.";
var arr=['[Replace 1]','[replace 2]','[replace 3]' ];
//var regex=/(\{+)(\d+)(\}+)/g;
var regex=/(\{+)?{(\d+)}(?!\}+)?/g;
var _index='';
var result= s.replace(regex,function(){
if(arguments[1]) return arguments[0];
_index=arguments[2]-0;
if(_index<arr.length&&_index>=0)return arr[_index];
});
/*
var result= s.replace(regex,function(){
if(arguments[1].length!=1||arguments[3].length!=1) return arguments[0];
_index=arguments[2]-0;
if(_index<arr.length&&_index>=0)return arr[_index];
});
*/
alert(result);
/*
* summary: 将指定的 String 中的每个格式(例如:{0}, {1}等)项替换为相应对象的值的文本等效项。
* 需显示左大括号时,应输入双左大括号,即 "{{" 。
*
* parameter:
* fmtStr@string: 包含零个或多个格式项。
* paramsArray@paramsObject[]: 包含零个或多个要格式化的对象的 Object 数组。
*
* return: fmtStr 的一个副本,其中格式项已替换为 paramsArray 中相应 Object 实例的 String 等效项。
*
* example: document.write(String.format("hello, {0}, {1}!<br />keey {{{{2}}", "world", 123));
*/
String.format = function(fmtStr, paramsArray) {
var output = fmtStr;
var re;
var valueArray;
if (paramsArray instanceof Array)
valueArray = paramsArray
else
{
valueArray = new Array();
for (var i=1; i<arguments.length; i++)
valueArray.push(arguments[i]);
}
for (var i=0; i<valueArray.length; i++)
{
re = new RegExp("(\\{)?\\{"+i+"}", "g");
output = output.replace(re, function($0, $1){
return $1 ? $0 : valueArray[i];
});
}
return output.replace(new RegExp("\\{\\{", "g"), "{");
};
document.write(String.format("hello, {0}, {1}!<br />keey {{{{2}}", "world", 123));
//Try it.
var s = "This is a {0}, test {{0} {1}.";
var arr=['[Replace 1]','[replace 2]','[replace 3]' ];
var regex=/(\{+)(\d+)(\}+)/g;
var _index='';
var result= s.replace(regex,function(){
if(arguments[1].length!=1||arguments[3].length!=1) return arguments[0];
_index=arguments[2]-0;
if(_index<arr.length&&_index>=0)return arr[_index];
});
alert(result);
var reg = /(?<!{)\{0}/g;