Javascript将[url =]转换为html链接

时间:2013-09-23 05:25:48

标签: javascript jquery regex

我正在尝试转换这个:

[url=http://example.com] this is a link [/url]

到标准的html链接:

<a href=http://example.com>this is a link</a>

到目前为止,我可以将url字符串转换为链接,但[url=] [/url]仍然存在,我不知道如何过滤它。

message.replace(/(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1'>$1</a>")

如何过滤掉正则表达式中的[url=] [/url]并确保this is a link(用户定义的文字)也会保留?

2 个答案:

答案 0 :(得分:5)

您只需将其添加到替换正则表达式:

message.replace(/\[url=(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])\]/ig, "<a href='$1'>$1</a>")
                 ^^^^^^

虽然您仍然拥有最后一个url标记,但您可以使用否定类来简化操作:

message.replace(/\[url=([^\]]+)\]\s*(.*?)\s*\[\/url\]/ig, "<a href='$1'>$2</a>")

regex101 demo

编辑:因为潜在的其他标签而使结束标记成为文字

答案 1 :(得分:0)

我会分三步完成:

  • [url=替换为<a href="
  • [/url]替换为</a>
  • ]替换为">

但这只是一种意见。我通常喜欢保持简单,然后继续讨论下一个问题。