Javascript正则表达式.replace()无效

时间:2012-01-24 17:23:39

标签: javascript jquery replace

我模糊地了解了正则表达式如何在我的上一个问题上提前工作,并认为我可以将其与其他字符串一起使用。显然事实并非如此。以下是名为mqcontainer的div的内容。

<a style="text-decoration:none;" href="http://i.imgur.com/TeC4R.png"><img src="http://i.imgur.com/TeC4R.png" alt="Posted Image">[br]<small></small></a><small><a href="http://i.imgur.com/TeC4R.png" class="view_full">View Full Image</a></small>

我的目标是过滤掉这个字符串,以便在我点击按钮时显示[url=http://i.imgur.com/TeC4R.png]Image[/url]。这就是我一直在尝试的:

$("#containerbtn").click(function(){
$("#mqcontainer").each(function(){
  $(this).html(
    $(this).html().replace(
      /<a style="text-decoration:none;" href="(.*?)"><img src=".*?" alt="Posted Image">\[br\]<small><\/small><\/a><small><a href=".*?" class="view_full">View Full Image<\/a><\/small>/g,
      '[url=$1]Image[/url]'
    )
  );
});
});

无论我尝试什么,它都无法正常工作。谁能让我对这个问题有所了解?

3 个答案:

答案 0 :(得分:3)

[br]应该在正则表达式\[br\]

中进行转义

答案 1 :(得分:1)

<强>错误:

$("#mqcontainer").each(function(){
  $(this).html(
    ...
  )};
)};

上面的代码不正确。由于只有一个ID为mqcontainer的div。

试试这个:

$("#mqcontainer").html(
    $("#mqcontainer").html().replace(/<a style="text-decoration:none;" href="(.*?)"><img src=".*?" alt="Posted Image">\[br\]<small><\/small><\/a><small><a href=".*?" class="view_full">View Full Image<\/a><\/small>/g, '[url=$1]Image[/url]')
);

答案 2 :(得分:0)

<a style="text-decoration:none;" href="(.*?)"><img src=".*?" alt="Posted Image">\[br\]<small><\/small><\/a><small><a href=".*?" class="view_full">View Full Image<\/a><\/small>

上述情况应该有效。

我删除了一个无关的],这是在你的图像之后和逃脱[br]之前。

编辑:添加一条注释,看到上面的powtac评论后查看修订历史记录实际上是您在修改建议时引入的错误。