求教正则

sailflying 2006-08-10 04:03:53
求教正则

var _A = ['A','B','C','D'];
var _B = '<ul><li>$0$< / li><li>$1$< / li><li>$2$< / li><li>$3$< / li></ul>';
var _C= _B.replace( ???????? );
求教正则该如何写?
让 _C = '<ul><li>A< / li><li>B< / li><li>C< / li><li>D< / li></ul>';




var _C = _B;
for(var j=0; j<_A.length; j++){
_C = _C.replace('$' + j + '$',_A[j]);
}

用循环一个一个替换,也能得到结果,但是效率很差,大量数据特别慢
_C = '<ul><li>A< / li><li>B< / li><li>C< / li><li>D< / li></ul>';
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sailflying 2006-08-10
  • 打赏
  • 举报
回复
非常感谢
fosjos 2006-08-10
  • 打赏
  • 举报
回复
\$(\d+)\$
sailflying 2006-08-10
  • 打赏
  • 举报
回复
$(\d)$ 测试过,1位数字可以,超过10的替换不到
$(\d\d) $2位数字可以,小于10的替换不到
能不能让$$中间的是任意数字啊。比如 $3$, $45$, $143$
fosjos 2006-08-10
  • 打赏
  • 举报
回复
_C = _B.replace(/\$(\d)\$/g,function(a,b){return _A[b]});

$(\d)$
a是arguments[0]匹配的是整段"$0$",b是arguments[1]匹配(\d)是"0"
sailflying 2006-08-10
  • 打赏
  • 举报
回复
arguments 属性
为当前执行的 function 对象返回一个arguments 对象。



不懂,怎样用
fosjos 2006-08-10
  • 打赏
  • 举报
回复
_C = _B.replace(/\$(\d)\$/g,function(){return _A[arguments[1]]});

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧