Выражение Regex для проверки номера не должно идти после da sh и не должно содержать IP-адрес - PullRequest
1 голос
/ 22 апреля 2020

Я хочу регулярное выражение с alphanumeri c и (.-) с некоторым условием.

  1. номер не должен следовать после - символ
  2. Он не должен принимать IP-адрес.
  3. (.-) не должно приходить в начале и в конце, но оно может находиться между.

Например:

abc-123 // invalid
abcxyz // valid
abc-xyz // valid
-abc // invalid
abc- // invalid
.abc // invalid
abc. // invalid

https://regex101.com/r/PgLFkq/3

Спасибо!

1 Ответ

3 голосов
/ 22 апреля 2020

Одним из способов может быть использование отрицательного предпросмотра после сопоставления с дефисом -(?![0-9]), чтобы проверить, что за ним не следует di git.

Чтобы не сопоставлять IP-адрес, вы можете использовать отрицательное предпросмотр для убедитесь, что он не соответствует шаблону, подобному ^(?![0-9]{1,3}(?:\.[0-9]{1,3}){3}$)

^(?![0-9]{1,3}(?:\.[0-9]{1,3}){3}$)[a-z0-9]+(?:(?:\.|-(?![0-9]))[a-z0-9]+)*$

По частям

  • ^ Начало строки
  • (?! Отрицательный прогноз, проверьте, что прямо справа это не
    • [0-9]{1,3}(?:\.[0-9]{1,3}){3}$ Соответствует ip-подобному формату
  • ) Закрыть взгляд вперед
  • [a-z0-9]+ Соответствовать 1+ вхождений a-z0-9
  • (?: группа без захвата
    • (?:\.|-(?![0-9])) Соответствует либо ., либо -, за которым не следует di git
    • [a-z0-9]+ Совпадение 1+ вхождений a-z0-9, чтобы оно не могло и на . или -
  • )* Закрыть группу и повторить 0+ раз
  • $ Конец строки

Regex demo

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