【问题标题】:Javascript and PHP Regular Expression for url validation [duplicate]用于 url 验证的 Javascript 和 PHP 正则表达式 [重复]
【发布时间】:2012-02-22 21:06:21
【问题描述】:

可能重复:
Regular expression for URL validation (in JavaScript)

所以我看到了许多类似的问题和答案,但找不到适合我特定需求的解决方案。

我的正则表达式很糟糕,并且正在努力为以下 url 验证获取一个简单的正则表达式。

domain.com
domain.com/folder
subdomain.domain.com
subdomain.domain.com/folder

还可以验证可选的 http:// 和 http://www。会非常有帮助。谢谢!

【问题讨论】:

  • 怎么说 somedomain.sometld 是一个有效的 URL?小心这个。你没有找到太多的原因是因为这是一个棘手的问题,在链接太多与太少之间存在棘手的平衡。如果是我,我会撒网,构建一个有效的 URL,然后在自动链接之前在服务器端访问这些 URL 以查看它们是否存在。
  • "找不到适合我特定需求的解决方案" ...您的需求与互联网上数百万个示例有何不同(包括堆栈溢出)演示如何验证 URL?
  • 我想我可以使这个解决方案更容易。一个不允许说“超过一个 . 或 / 在字母数字字符之间”的正则表达式怎么样。例如。 domain..com 应该失败。我也同意布拉德的观点,因为 URL 有非常广泛的规则,所以没有明确的解决方案。我只是想找到输入网址的基本验证。

标签: php javascript regex


【解决方案1】:

尽我所能:

/[a-z]+:\/\/(([a-z0-9][a-z0-9-]+\.)*[a-z][a-z]+|(0x[0-9A-F]+)|[0-9.]+)\/.*/

请注意,您的问题并未将 URL 限制为一组协议、TLD 或字符集。

skype://18005551212gopher://localhost 之类的内容是有效的 URL。哎呀,根据您用来浏览的内容,以下可能都是访问同一服务器的有效方法(尽管虚拟主机不完全相同):

它们都适用于 Firefox。

如果您想要进一步的限制,请确定它们是什么。你愿意牺牲有效的协议吗?您真的只对一两个协议感兴趣吗?

一个更具体的问题会给你一个更具体的答案。

【讨论】:

  • 感谢您的初步回答。只需常见的字母数字网址就足够了。这仅用于客户对其网站的输入。谢谢。
  • 我还在上面发表了评论,可能会简单地制作这个正则表达式。也许只检查至少 1 个句点,并且不允许连续超过 1 个句点或正斜杠。事实上,我们已经建议我们的客户忽略 http://,www 部分,但您永远不知道用户会输入什么。再次感谢。
  • 有趣。我们始终建议保留 http:// 以确保在电子邮件客户端、博客软件等中正确匹配字符串。现在,去掉“www”通常不是问题;如果域本身的 IP 记录与 Web 服务器不同,大多数地方至少会提供重定向。 (请注意,如果找不到 MX 主机,域上的地址记录也可能用于 SMTP。)
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 2012-03-03
  • 2013-08-24
  • 2012-03-29
相关资源
最近更新 更多