Вы должны добавить /
после этой необязательной группы портов, чтобы она не позволяла вводить цифры до /
.Попробуйте использовать это регулярное выражение,
^(https:\/\/)([a-zA-Z\d\.]{2,})\.([a-zA-Z]{2,})(:5?443)?\/\S*
Обратите внимание, я также изменил (:5{0,1}443)?
на (:5?443)?
и изменил последний .*
на \S*
, чтобы URL не захватывал пробелы как пробелы в URLне действительная вещь.Кроме того, вы также можете избавиться от стольких групп в своем регулярном выражении, если только они вам не нужны.
Демонстрация регулярных выражений
Изменить:
Как вы сказали в комментариях, что вы также хотите соответствовать следующим URL-адресам,
https://example.com
https:example.com
https:example.com:443
вам нужно сделать \/\S*
часть необязательной, поместив ?
после них.Модифицированное регулярное выражение становится таким, что будет соответствовать вышеуказанным URL.
^https:\/\/([a-zA-Z\d\.]{2,})\.([a-zA-Z]{2,})(:5?443)?(\/\S*)?
Демонстрация с необязательной частью filepath