1

我目前正在尝试将其转换为:

[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(用户定义的文本)也保留?

4

2 回答 2

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>")

正则表达式101演示

编辑:由于潜在的其他标签,使结束标签成为文字

于 2013-09-23T05:30:14.940 回答
0

我会分 3 步做到这一点:

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

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

于 2013-09-23T05:29:38.333 回答