正则求助。。

ZXY900213 2013-07-16 01:17:09
var emoticons = [
{ name: "微笑", icon: "App_Themes/Default/images/emoticons/0.gif" },
{ name: "呲牙", icon: "App_Themes/Default/images/emoticons/1.gif" }
];

var str = "[微笑[呲牙]";

str.replace(/\[[^\]]+?\]/g, function (word) {
var name = word.substring(1, word.length - 1);
for (var i = 0; i < emoticons.length; i++) {
if (name == emoticons[i].name)
return "<img src='" + emoticons[i].icon + "' />";
}
return word;
});

// 返回的字符串是:[微笑[呲牙] 没有替换后面的[呲牙]
// 想要的效果是:[微笑<img src='App_Themes/Default/images/emoticons/1.gif' />


我想把中括号和里面对内容替换成对应的img标签,正常的话,这个正则可以。。比如:[微笑][呲牙]
但是如果像上面那样,少了半边括号,就不行了。前面少了半边括号不替换,但是后面的[呲牙]也没替换。

求指点。。。
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
likeajin 2013-07-16
  • 打赏
  • 举报
回复

var emoticons = [
   { name: "微笑", icon: "App_Themes/Default/images/emoticons/0.gif" },
   { name: "呲牙", icon: "App_Themes/Default/images/emoticons/1.gif" }
];
 
var str = "[微笑[呲牙]";
 
str.replace(/\[([^\]\[]+?)\]/g, function(a, b) {
    for (var i = 0; i < emoticons.length; i++) {
        if (b == emoticons[i].name) return "<img src='" + emoticons[i].icon + "' />";
    }
    return a;
});
xuzuning 2013-07-16
  • 打赏
  • 举报
回复
str.replace(/\[[^\[\]]+?\]/g,....

87,903

社区成员

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

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