【发布时间】:2019-01-29 17:21:40
【问题描述】:
我知道有无穷无尽的正则表达式来验证 URL,但我发现所有问题都遇到了问题。我需要一个匹配所有 Http 或 Https url 的正则表达式,但不验证链接是否没有 tld 并且不验证它是否缺少子域。如果可能,它还需要匹配完整的 url slug。
以下是不应验证的网址示例:
https://www
https://www.
https://www.exampledomain
下面是几个应该验证的 URL 示例:
https://www.axiamed.com
https://www.axiamed.com/independent-software-vendors/
我一直在使用下面的正则表达式...
((ftp|https?)://[-\w]+(\.\w[-\w]*)+|(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?: com\b|edu\b|biz\b|gov\b|in(?:t|fo)\b|mil\b|net\b|org\b|[a-z][a-z]\b))(\:\d+)?(/[^.!,?;"'<>()\[\]{}\s\x7F-\xFF]*(?:[.!,?]+[^.!,?;"'<>()\[\]{}\s\x7F-\xFF]+)*)?
...但是我不希望匹配上面列出的 3 个 URL 中的最后一个。不知道从这里去哪里。谁能指出我正确的方向?
感谢任何愿意提供帮助的人!
【问题讨论】:
-
您的正则表达式完全不完整。它显然早于 TLD 爆炸。
-
你可以使用一个虚拟的
a标签并从中获取协议和路径属性。你愿意接受这样的解决方案吗?
标签: javascript regex