regex - 微调正则表达式
问题描述
我正在尝试使用这个漂亮的正则表达式:
\(?(?:(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
解决方案
我没有阅读后面的长表达式,但是如果你想强制始终包含协议名称(例如 http),你可以删除第三个'?从正则表达式。
推荐阅读
- python - 如何从文件名中提取元素并将它们移动到不同的列?
- java - Liquibase 生成的更改日志引发 SQL 语法异常
- excel - 当单元格中没有进行任何更改时,会出现一个 MessageBox,Excel?
- json - 序列化/编组包级用户将记录类型定义为 JSON
- javascript - 如何使用 Javascript 将数据从模式窗口传递到父窗口
- javascript - 如何将刀片文件中的动态数据作为道具传递给 vue 组件?
- javascript - 超级账本结构中的不可变事务
- haskell - 在 Haskell 中使用 scanl 函数
- javascript - Amcharts am4core 函数未定义
- javascript - 如何在 Shopware 6 中创建可以在 Twig 文件中使用的自定义 Javascript?