正则表达式用于根据用户输入将 url 转换为超链接



我有一个工作正则表达式,它接受用户输入,例如"请点击此链接:http://www.google.com 或此链接 https://www.google.com"并将URL转换为超链接。用户输入结束时的通知期。我需要知道如何忽略句子末尾的句点,以便最后一个 url 最终显示为 https://www.test2.com 而不是 https://www.test2.com。

vm.transformText = (text) ->
return text.replace(/(https://|http://)([w.?+=/]+)/g, "<a target="_blank" href="$1$2">$1$2</a>")

首先,可以重构您的模式,以便您可以根据需要更轻松地更改它。

https://|http://交替可以减少到一个短https?://其中s是可选的(?使模式匹配 1 或 0 次(。

[w.?+=/]+部分被过度转义。你只需要转义/(实际上,即使是字符类中的这个字符也可能不会被转义(。

如果您只想在.之前停止匹配,请使用

/(https?://)([w.?+=/]*[w?+=/])/g
^^^^^^^^^^^^^^^^^^^^

查看正则表达式演示

在这里,[w.?+=/]+变成[w.?+=/]*[w?+=/]:0个或更多的单词,点,?+=/个字符,后跟一个单词,?+=/字符。

最新更新