Regex неверно истолкован - PullRequest
0 голосов
/ 19 июня 2019

В моем модульном тесте 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,})?)).*');

1 Ответ

1 голос
/ 19 июня 2019

Это соответствует ww.test.c, потому что ww. оценивает TRUE для (?!www) части: да, это не a www.

Более подходящий шаблон (все еще нетПринятие всех действительных адресов и игнорирование адресов IPv4) будет: ^(https?:\/\/|www\.)[a-zA-Z0-9]{1,}\.[a-zA-Z]{2,} (совпадает с самого начала и соответствует принципу DRY ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...