这个正则表达式:
^((HTTPS | FTP)\:(\ /\/)|(文件\:\/{2,3}))(((25 [0-5] | 2 [0-4] - [O- 9] | [01]?[0-9] [0-9]?)\.){3}(25 [0-5] | 2 [0-4] [0-9] | [01]?[ 0-9] [0-9]?))|(((([[ - zA-Z0-9] +)(\.)?)+?)(\.)([az] {2} | com |组织|网络| GOV |万|企业|资讯|牧高笛|名称|航空|人才招聘|?博物馆))([?A-ZA-Z0-9\\ = \&\%\ /]*)$
格式化可读性:
^( # Begin regex / begin address clause
(https?|ftp)\:(\/\/)|(file\:\/{2,3}))? # protocol
( # container for two address formats, more to come later
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) # match IP addresses
)|( # delimiter for address formats
((([a-zA-Z0-9]+)(\.)?)+?) # match domains and any number of subdomains
(\.) #dot for .com
([a-z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum) #TLD clause
) # end address clause
([a-zA-Z0-9\?\=\&\%\/]*)? # querystring support, will pretty this up later
$
Run Code Online (Sandbox Code Playgroud)
匹配:
www.google
而且不应该.这是我的"失败"测试用例之一.我已经声明,当在alpha上而不是在IP上匹配时,URL的TLD部分是必需的,并且"google"不适合"[az] {2}"子句.
请记住,我将单独解决以下问题 - 这个问题是关于为什么它与www.google匹配而不应该.
我的正则表达式有什么问题?
编辑:另请参阅另一个测试用例中此正则表达式的早期版本的上一个问题: 如何正确地使此正则表达式匹配?
edit2:已修复 - 更正后的正则表达式(如提出的那样)是:
^((HTTPS | FTP)\:(\ /\/)|(文件\:\/{2,3}))(((25 [0-5] | 2 [0-4] - [O- 9] | [01]?[0-9] [0-9]?)\.){3}(25 [0-5] | 2 [0-4] [0-9] | [01]?[ 0-9] [0-9]))|(((([A-ZA-Z0-9] +)(\).?)+)(\)([AZ] {2} |?.com |组织|网络| GOV |万|企业|资讯|牧高笛|名称|航空|人才招聘|博物馆))([\ /] [\/A-ZA-Z0-9 \.]*)*([\ /? ] [\?] [A-ZA-Z0-9\= \&\%\ /]*)?$
Amb*_*ber 12
"谷歌"可能不适合[a-z]{2},但它确实适合[a-z]{2}([a-zA-Z0-9\?\=\&\%\/]*)?- /如果URL超出域名,您忘记要求在TLD之后.所以它用"www.go"作为域解释它,然后"ogle"跟随它,之间没有斜线.您可以通过[?/]在最后一个组的前面添加一个来修复它,以便在TLD和URL的任何其他部分之间要求这两个符号之一.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |