Как разрешить только 3 типа символов между словами? - PullRequest
2 голосов
/ 17 марта 2020

У меня есть набор разрешенных символов:

  1. апостроф `

  2. пробел

  3. da sh -

Я борюсь с созданием регулярного выражения, которое:

a. допускается только одно вхождение разрешенных символов между каждым словом (допускается любое количество слов)

E.g.
text-text    --> VALID
text text    --> VALID
text`text    --> VALID

b. допускает комбинации разрешенных символов, но не один за другим

E.g.
text-text`text    --> VALID
text text-text    --> VALID
text`text text    --> VALID
text``text  text  --> INVALID
text`text  text   --> INVALID
text`text -text   --> INVALID

c. не позволяет начинать с пустого пространства апостроф `или da sh - и не разрешает заканчиваться апострофом` или da sh -, но может заканчиваться [emptyspace]

E.g.
text[emptyspace]  --> VALID
[emptyspace]text  --> INVALID
`text             --> INVALID
text`             --> INVALID
-text             --> INVALID
text-             --> INVALID

d. Специальные символы не допускаются вообще

e. Цифры вообще не допускаются

Это то, что я имею до сих пор: https://regex101.com/r/9i3vq2/5

Ответы [ 2 ]

3 голосов
/ 17 марта 2020

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

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

См. Демоверсию regex

Подробности

  • ^ - начало строки
  • [a-zA-Z]+ - 1+ букв ASCII
  • (?:[ `-][a-zA-Z]+)* - 0 или более повторений
    • [ `-] - пробел, обратный тик или -
    • [a-zA-Z]+ - 1+ букв ASCII
  • ? - необязательный пробел
  • $ - конец строки.
0 голосов
/ 17 марта 2020

Я бы упростил ответ Виктора на следующее регулярное выражение:

^[a-zA-Z]+([ `-][a-zA-Z]+)* ?$

См. https://regex101.com/r/8wTpUv/1

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