我有一个正则表达式,它将解析消息的内容并将纯文本超链接转换为HTML超链接。
message = message.replaceAll("(?:https?|http?)://[\\w/%.\\-?&=!#]+",
"<a href='$0' target='_blank'>$0</a>");
转换http或https超链接时很好。
问题是我还在bbcode标签中包含了其他超链接,我不希望将正则表达式转换为HTML超链接。
E.g。 [IMG]http://www.google.com/img.png[/IMG]
或[YOUTUBE]http://www.youtube.com[/YOUTUBE]
如何更改正则表达式以防止正则表达式转换bbcode超链接?
答案 0 :(得分:3)
你可以使用负面的外观。
"(?<!\])(?:https?|http?)://[\\w/%.\\-?&=!#]+"
(?<!\])
只允许其余的网址格式匹配,如果它不会紧跟']'
。
答案 1 :(得分:0)
我建议使用这样的负面预测来避免匹配bbcode链接:
message = message.replaceAll("(?:https?|http?)://[\\w/%.\\-?&=!#]+(?!.*\\[/)",
"<a href='$0' target='_blank'>$0</a>");