Регулярное выражение для соответствия допустимому домену, если оно находится в начале строки - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь соответствовать приведенным ниже критериям с помощью Regex:

  1. Строка начинается с http или https
  2. Она заканчивается двумя конкретными доменами (ab c .com или xyz .com)
  3. После ab c .com или xyz.com может быть что угодно

Я написал ниже регулярное выражение для того же:

http[s]?:\/\/(.*).(abc|xyz).com\/(.*)

но он не работает в сценарии ниже, поскольку он не должен совпадать с регулярным выражением.

http://www.attacker.com/https://events.abc.com/#/en/navigator/init/meetings

Любая помощь очень ценится

Ответы [ 3 ]

2 голосов
/ 04 августа 2020

Вы можете использовать

^https?:\/\/([^\/]*\.)?(abc|xyz)\.com\/.*

Regex Demo

Вы должны проверить наличие символов, кроме / перед abc|xyz.com

Подробности

^https?:\/\/: http:// или https:// в начале строки

([^\/]*\.)?: любой символ, кроме / перед FQDN, за которым следует точка, это необязательно (?) для таких случаев, как //abc.com

(abc|xyz)\.com: соответствие FQDN

\/.*: соответствие / и все, что приходит после

1 голос
/ 04 августа 2020

Вы должны избегать буквальных точек (.): https?:\/\/.*\.(abc|xyz)\.com\/.* См. Демонстрацию здесь .

Конечно, если вы хотите поместить это в строковый литерал Java, он должен быть https?:\\/\\/.*\\.(abc|xyz)\\.com\\/.*

Я также удалил некоторые ненужные вещи из вашего регулярного выражения:

  1. Вам не нужно помещать отдельные буквы в класс символов ([s])
  2. (.*) необязательно указывать в скобках, но, возможно, стоит добавить к нему ?, чтобы он превратился в .*?, чтобы избежать жадности из *
0 голосов
/ 04 августа 2020

Используйте регулярное выражение, https?:\/\/.*.(?:abc|xyz).com\/.*

Проверьте демонстрацию на https://regex101.com/r/MgFZHm/2

Примечания:

  1. Вам не нужно группа захвата.
  2. [] является необязательным, чтобы сделать s необязательным, и я удалил его, чтобы сохранить его в чистоте.
  3. ?: используется, чтобы указать компилятору учитывать объект в ( ) как группа без захвата.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...