【问题标题】:URL Validation using regex使用正则表达式进行 URL 验证
【发布时间】:2020-12-03 01:24:11
【问题描述】:

我正在使用以下正则表达式。

regForUrl =/^((ftp|http|https):\/\/)(?:(www+\.)?)(?:([a-zA-Z0-9-]+\.))+([a-z]{2,3}\/)+(?:[\w\-\.\_\__\~\:\/\?\#\@\!\$\,\;\*\$\(\)\&\=\+\:\%]?)+$/;

示例 URL = 'http://test.domainName.com.ab:5445/endUrl'。

此正则表达式不接受上述 URL。如果出现“:”,则正则表达式返回 false。请解决这个问题...

【问题讨论】:

标签: javascript regex validation url apex


【解决方案1】:

这行得通:

^((ftp|http|https):\/\/)(?:(www+.)?)(?:([a-zA-Z0-9-]+.))+([a-z]{2,3})+(?:[\w-._~:/?#@!$,;*$()&=+:%]?)$

但我不确定你想用这个做什么。

【讨论】:

  • 为什么会有这些无用的捕获组? ([a-z]{2,3})+ 在您的正则表达式中的目的是什么,这没有意义?为什么最后一个非捕获组只有 1 个字符? www+ 匹配 wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww(不是错误,而是?)
  • @Toto,你是对的。我看到了这些和其他……奇怪的表情。我只限于修复原始的正则表达式。这就是为什么我说“我不确定你想用这个做什么”。
【解决方案2】:
^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$

这适用于所有这些(example.com、www.example.comhttp://example.comhttps://example.com 以及任何参数)。

【讨论】:

  • ftp 协议呢?为什么单个s 的捕获组?您的正则表达式匹配 .......-.~~!,不确定这些是有效的 URL。看看RFC 3987
猜你喜欢
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 2014-12-25
  • 2014-04-21
  • 1970-01-01
相关资源
最近更新 更多