我有一个工作正则表达式,它接受用户输入,例如"请点击此链接: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个或更多的单词,点,?
,+
,=
或/
个字符,后跟一个单词,?
,+
,=
或/
字符。