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

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Оно должно соответствовать этим URL-адресам

 https://example.com/id/username/
http://example.com/id/username/
https://www.example.com/id/username
http://example.com/id/username/
  

по сути, оно должно начинаться с http или https , когда, возможно www , когда example.com и /id и последнее — это имя пользователя, которое может быть любым, и / не всегда в конце

имя пользователя может быть любым

Я получил это до сих пор:

   if (input.match(/http://example.com/i)) {
    console.log('-');
  }
  

также как проверить с помощью регулярного выражения, заканчиваются ли URL-адреса числом 7, подобным 1234567/ или 3523173 . / не всегда в конце

Комментарии:

1. Пожалуйста, укажите URL-адреса, где они не будут совпадать

2. что-нибудь еще не должно быть много

3. Пожалуйста, будьте более точными: являются ли идентификаторы только числовыми или буквенно-цифровыми (включая буквы, то есть). Как насчет имен пользователей? Могут ли они содержать числа, - , . или любые другие символы?

4. Можете ли вы добавить несколько допустимых / недопустимых примеров?

5. идентификаторы — это буквы только в этом случае, они не могут содержать - или . только букву, моя ошибка

Ответ №1:

Используйте следующее регулярное выражение

 http(s)?://(www.)example.com/id/[a-zA-Z0-9] 
  

При необходимости вы можете изменить [a-zA-Z0-9] в соответствии с вашим форматом имени пользователя. Смотрите следующий пример:

  • [a-zA-Z0-9] ==> Имя пользователя содержит прописные, строчные буквы, число. (john008)
  • [a-zA-Z] ===> Имя пользователя содержит прописные, строчные буквы. (джон)
  • [0-9] ===> Имя пользователя содержит только номер. (123456)

Комментарии:

1. как насчет URL-адресов, без www. которых, похоже, не так много

2. Вы можете использовать это с www. или без www. Сопоставляются все URL-адреса с или без воли.

3. idk, возможно, я делаю что-то не так, но https://example.org/id/username не mactch

4. Вы хотите использовать в javascript?

5. var regex = /http(s)?://(www.)example.com/id/[a-zA-Z0-9] /ig; if ( regex .test(ввод) ) { console.log(‘-‘); }

Ответ №2:

https?://(www.)?example.com/id/([a-zA-Z] )/?

Комментарии:

1. https?://(www .)?example.com / id /w /? мне кажется лучше, поскольку имя пользователя в большинстве случаев также может содержать числа.

2. на момент ответа имя пользователя было ограничено только буквами

Ответ №3:

Без дополнительной спецификации вы могли бы использовать

 bhttps?:. ?example.com/[a-zA-Z] /w /?(?=s|Z)
  

Смотрите демонстрацию на regex101.com .


Это

 b                   # a word boundary
https?:              # http/https:
. ?                  # anything else afterwards, lazily
example.com         # what it says
/[a-zA-Z] /w /?  # /id/username with / optional
(?=s|Z)            # followed by a whitespace or the end of the string