首页 > 解决方案 > 微调正则表达式

问题描述

我正在尝试使用这个漂亮的正则表达式:

\(?(?:(http|https|ftp):\/\/)?(?:((?:[^\W\s]|\.|-|[:]{1})+)@{1})?((?:www.)?(?:[^\W\s]|\.|-)+[\.][^\W\s]{2,4}|localhost(?=\/)|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::(\d*))?([\/]?[^\s\?]*[\/]{1})*(?:\/?([^\s\n\?\[\]\{\}\#]*(?:(?=\.)){1}|[^\s\n\?\[\]\{\}\.\#]*)?([\.]{1}[^\s\?\#]*)?)?(?:\?{1}([^\s\n\#\[\]]*))?([\#][^\s\n]*)?\)?

在这里找到它:https ://someweblog.com/url-regular-expression-javascript-link-shortener/

它找到 URL 并缩短它们。但是有一个错误。当任何 2 个字符有句点“.”时 在这之间它变成了一个链接。例如,如果用户忘记在 2 个单词之间放置一个空格……它就变成了一个 URL。

例如:我非常喜欢stack.overflow。stack.overflow 将成为一个链接。

虽然,示例中使用了 Javascript。此正则表达式适用于 VB.net。这个问题的一个没有:Regex to find URLs in a string

标签: regexvb.net

解决方案


我没有阅读后面的长表达式,但是如果你想强制始终包含协议名称(例如 http),你可以删除第三个'?从正则表达式。


推荐阅读