Проверка на диакритические знаки с регулярным выражением - PullRequest
17 голосов
/ 19 января 2012

Простая проблема: существующий проект позволяет мне добавлять дополнительные поля (с дополнительными проверками этих полей в качестве регулярных выражений) для поддержки пользовательских форм ввода. И мне нужно добавить новую форму, но я не могу изменить работу этого проекта. Эта форма позволяет посетителю ввести его имя и фамилию плюс инициалы. Таким образом, RegEx ^[a-zA-Z.]*$ пока работает нормально.
Затем кто-то заметил, что он не принимает диакритические знаки в качестве входных данных. Турецкое имя типа Ömür не было принято как действительное. Это должно быть принято, хотя.

Так что у меня есть два варианта:

  1. Снимите флажок полностью, что позволит пользователям вводить мусор.
  2. Напишите регулярное выражение, которое также будет содержать диакритические буквы, но без цифр, пробелов или других не букв.

Поскольку я не могу изменить код проекта, у меня есть только эти две опции. Я бы предпочел вариант 2, но теперь задаюсь вопросом, каким должен быть правильный RegEx. (Проект написан на C # 4.0.)

1 Ответ

29 голосов
/ 19 января 2012

Вы можете использовать специальный escape-код Unicode для букв - \p{L} (включая диапазоны A-Za-z):

^[.\p{L}]*$

См. regularexpressions.info :

\ p {L} или \ p {Letter}

Соответствует одной кодовой точке Unicode со свойством «letter».См. Свойства символов Unicode в учебнике для полного списка свойств.Каждая кодовая точка Unicode имеет ровно одно свойство.Может использоваться внутри классов символов.

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