Regex для простых и акцентированных символов, с пробелами и тире только внутри строки - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь найти регулярное выражение для использования внутри JSON схемы. Ограничения:

  • от 0 до 100 символов строка
  • принимает буквы, акцентированные буквы (без греческих букв, но также включают œ)
  • принимает пробел, 'и - ТОЛЬКО внутри строки

У меня подход грубой силы:

"^((?![Ð×Þß÷þø])[a-zA-ZÀ-ÿŒœ]{1})((?![Ð×Þß÷þø])[-'a-zA-ZÀ-ÿŒœ ]{0,98})((?![Ð×Þß÷þø])[a-zA-ZÀ-ÿŒœ]{1})$"

Это работает .. почти: выбор символов соответствует тому, что я хочу. Но он не будет принимать строки ниже 2 символов. Итак, вместо создания трех групп, есть ли способ отклонить пробел, - и «в начале и в конце группы?

Дополнительный вопрос: написав это, я понимаю, что смежные пробелы или тире тоже нежелательны ...

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете сделать это с отрицательными осмотрами, то есть с упреждением впереди и с оглядкой назад. И мы также исключаем группу нежелательных символов везде:

^((?!.*[Ð×Þß÷þø])(?![ '-])[-'a-zA-ZÀ-ÿŒœ ]{0,100})(?<![ '-])$

Демо

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