【发布时间】:2016-08-11 15:18:27
【问题描述】:
我正在尝试使用正则表达式来替换作为消息传入的图像、视频和其他 url。我以为一切正常,但在替换 www.google.com 之类的 URL 的最后一个案例中遇到了问题。它现在将 localhost:3000 添加到这些 url 的前面。我不是最好的正则表达式,但看起来正则表达式在 HTML 中工作,因为 href 是 www.google.com。谁能帮忙看看哪里出了问题?
var image_url = /([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i;
var message = text.replace(image_url,'<a href="$1" target="_blank"><img width=100px height=100px src="$1"/></a>')
var video_url = /([a-z\-_0-9\/\:\.]*\.(mp4|webm|ogg))/i;
message = message.replace(video_url,'<a href="$1" target="_blank"><video src="$1"></video></a>')
var exp_url = /(?:^|[^"'])(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/gi;
message = message.replace(exp_url,'<a href="$1" target="_blank">$1</a>')
【问题讨论】:
-
不完全理解问题......你能发布更多的代码吗?特别是“文本”变量的值是多少?
-
文本是用户发送的消息,因此可以是任何内容。该函数的工作是检查它是图像、视频还是 url,并用正确的标签替换它。前两个似乎工作正常,但最后一个想将 localhost:3000 添加到它的前面
-
如果问题只是最后一个问题,你能把问题简化为那个吗?我们似乎没有必要查看正在运行的代码部分。
-
你想添加
localhost:3000吗?或者你是说神奇地有一个不需要的localhost:3000出现在某个地方?请提供message值,以便我们重现问题。 -
我补充说,因为最终的正则表达式(exp_url)必须考虑他们添加一个锚标签,如果它已经找到一个锚标签,则忽略该 url
标签: javascript regex