Regex Соответствие специальных символов между двумя символами - PullRequest
2 голосов
/ 05 августа 2020

Итак, у меня есть следующие требования:

  1. Любые алфавиты между az или AZ
  2. Первый символ должен быть алфавитным
  3. Числовые c символы не разрешено
  4. Никакие специальные символы не разрешены, кроме этих трех: .- '
  5. И они могут быть только между буквами

Пока что для решения этой проблемы у меня есть получил 2 следующих регулярных выражения:

^[a-zA-Z][a-zA-Z ]*$

Это для решения точек 1,2,3

(?<=[a-zA-Z])[.\-'](?=[a-zA-Z])

, и это для решения точек 4,5

Test случаи могут быть такими словами:

  • ab c (пройти)
  • ab c 's (пройти)
  • ab c' (сбой )
  • ab c '(сбой)

Однако я не могу их объединить. Я пытался, но не получил ожидаемого результата. Есть идеи?

1 Ответ

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

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

^[a-zA-Z]+(?:[-.'][a-zA-Z]+)*$

См. демонстрацию регулярных выражений

Подробности

  • ^ - начало строки
  • [a-zA-Z]+ - 1+ букв ASCII
  • (?:[-.'][a-zA-Z]+)* - 0 или более вхождений
    • [-.'] - дефис, точка или одинарная кавычка
    • [a-zA-Z]+ - 1+ букв ASCII
  • $ - конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...