肉碎机 / url-validator
一个用于验证URL的正则表达式。
Requires
- php: >=5.3
- ext-intl: *
Requires (Dev)
- phpunit/phpunit: ~4.4
This package is not auto-updated.
Last update: 2020-01-20 03:31:58 UTC
README
我创建这个仓库是为了Mathias Bynens的小挑战“[寻找完美的URL验证正则表达式] (https://mathiasbynens.be/demo/url-regex)”。如果我可以提前告诉你,我的并不是完美的。但它更接近完美。
这个正则表达式包含来自[Diego Perini的正则表达式和他Gist上的评论] (https://gist.github.com/dperini/729294)的部分,以及来自[Symfony URL约束模式] (https://github.com/symfony/Validator/blob/master/Constraints/UrlValidator.php#L34-L36)的一些内容。
请注意,挑战并未涵盖所有可能的合法URL结构。单元测试包含了一些应该有效和无效的URL,它们不属于挑战范围。
此外,请注意,这个类不是作为一个真正的验证器,而是作为一个验证器的起点。由于它包含大量Diego Perini的正则表达式,我不得不将其以MIT许可证发布。但我将询问他是否可以将其以Unlicense许可证发布。如果您计划在代码中使用此正则表达式,请考虑移除用户名、密码、端口和IP地址支持;因为这些地址不应用于例如个人资料页面或博客文章评论中的用户主页。
最后一点,这个类还包含了一个方案(也称为协议)验证正则表达式。
提供的单元测试对这个小类有100%的覆盖率,代码与PHP 5.3+兼容。
特性
- 完整的国际化域名(IDN)支持。
- 完整的Punycode支持。
- 支持作为主机名的IPv4和IPv6地址。
- 提取URL部分(如
parse_url
)- 方案(也称为协议)
- 用户名
- 密码
- 主机名
- 域名 + TLD
- IPv4
- IPv6
- 端口
- 路径
- 查询
- 片段
安装
类和测试可通过composer获取。
composer require fleshgrinder/url-validator dev-master
待办事项
- IPv6地址验证完全依赖于PHP的
filter_var
实现,找到一种方法用正则表达式验证它。 - 将正则表达式移植到JavaScript,以便在HTML输入URL元素中使用,当然也可以用于JavaScript本身。
- 为单元测试找到更多有趣的URL。
链接
许可证
MIT许可证(MIT)