在我的单元测试中,URL http://www.test.c被接受,但是应该提供一个错误。该代码在Delphi中使用。
kRgEx := TRegEx.Create
('((https|http):\/\/)?(((?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9]+\.[a-zA-Z][a-zA-Z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,})?)).*');
答案 0 :(得分:1)
它与ww.test.c
相匹配,因为ww.
对(?!www)
部分的判断为TRUE:是,它不是www
的。
更合适的模式(仍然不接受所有有效地址并且不考虑IPv4地址)将是:^(https?:\/\/|www\.)[a-zA-Z0-9]{1,}\.[a-zA-Z]{2,}
(从一开始就匹配并遵守DRY原则)。