当前位置:  开发笔记 > 编程语言 > 正文

用于部件捕获的url验证的正则表达式

如何解决《用于部件捕获的url验证的正则表达式》经验,为你挑选了2个好方法。

可以使用单个正则表达式来修改网址并匹配所有部分,我一直在研究一个,到目前为止我提出的是:

(?:(?P[a-z]*?)://)?(?:(?P.*?):?(?P.*?)?@)?(?P.*?)/(?:(?:(?P.*?)\?)?(?P.*?\.[a-z]{1,6})?(?:(?:(?P.*?)#?)?(?P.*?)?)?)?

但是这不起作用,它应该匹配以下所有示例:

http:// username:password@hostname.tld/path?arg = value#anchor
http://www.domain.com/
http://www.doamin.co.uk/
http://www.yahoo.com/
http://www.google.au/
https:// username:password@domain.com/
ftp:// user:password@domain.com/path/
https://www.blah1.subdoamin.doamin.tld /
domain.tld /#anchor
doamin.tld /?query = 123
domain.co.uk/
domain.tld
http://www.domain.tld/index.php?var1 = blah
http://www.domain.tld /path/to/index.ext
mailto://user@unkwndesign.com

并为所有组件提供命名捕获:

计划,例如.http https ftp ftps callto mailto和任何其他未列出的
用户名
密码
主机名,包括子域,域和tld
路径,例如/ images/profile/
filename,例如file.ext
查询字符串.?foo = bar&bar = foo
片段例如.#锚

使用主机名作为唯一的必填字段.

我们可以假设这是来自特定要求网址的表单,并且不会用于在文本中查找链接.



1> bobince..:

可以使用单个正则表达式来确定URL并匹配所有部分

没有.

strager的正则表达式令人印象深刻,但在一天结束时,它比仅使用正确的URI解析器更不易读,可维护和可靠.它必然拒绝有效的URI并接受非URI的字符串,因为格式化URI的规则无法在正则表达式中完全表达.

邮寄地址://user@unkwndesign.com

mailto URI中不应该有"//".在您阅读该方案之前,您无法分辨URI的余数(post-:)将采用何种格式; 许多URI方案不符合凭证@host/path格式.最好只接受您知道如何解析其URI的特定方案.



2> strager..:

mingfai正则表达式的修改版本:

/^((?Phttps?|ftp):\/)?\/?((?P.*?)(:(?P.*?)|)@)?(?P[^:\/\s]+)(?P:([^\/]*))?(?P(\/\w+)*\/)(?P[-\w.]+[^#?\s]*)?(?P\?([^#]*))?(?P#(.*))?$/

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有