#regex #expression
#регулярное выражение #выражение
Вопрос:
Я не разбираюсь в регулярных выражениях, поэтому прошу вашей помощи. Я отслеживаю ввод данных по имени добровольца, и поэтому мне нужно обеспечить соблюдение формата имени, которое они вводят в моей форме Google. Я выбрал сначала инициал (F выше), за которым следуют точка, пробел и его фамилия (Lxxxxx выше). Его инициал и первая буква фамилии должны быть заглавными буквами от A до Z. Мне не нужно учитывать международные соображения. Разрешение написания фамилий через дефис было бы бонусом. Заранее спасибо.
А. Линкольн прошел бы. A.Lincoln потерпел бы неудачу. Линкольн потерпел бы неудачу. В противном случае произойдет сбой.
Комментарии:
1. Это хороший вопрос, но он не дает нам строгих правил (которые необходимы для правильного регулярного выражения). 1. Какова длина фамилии (может ли это быть одна буква, как
F. L
?) 2. Если-
разрешено, вызывают ли две последовательные--
ошибки (F. La--x
)? 3. Аналогично, разрешено ли фамилии содержать более одного-
(F. La-a-x
)? 4. Как насчет двойных пробелов (скажем, кто-то случайно вводит два пробела)? 5. Имена могут заканчиваться на-
(F. Laxx-
)?2. 1, Фамилия может быть не короче 1 символа. Оно может быть такой же длины, как поле. 2. Никаких последовательных дефисов. 3. Один дефис. 4. Никаких двойных пробелов. Я выполняю строгое сопоставление строк без синтаксического анализа. 5. Без конечного дефиса. Оно предназначено для имен типа Lake-Smith.
3.
^[A-Z]. [A-Z][a-z]*(?:-[a-z] )?$
Работает у вас? Вы можете протестировать его здесь: regex101.com/r/NezGRK/1
Ответ №1:
Если вы хотите применить регистр, вы могли бы сделать это:
/[A-Z]. [A-Z][a-z-] /
(При условии отсутствия дефисов в качестве первой буквы)
Если вас не волнует регистр, то:
/[A-Za-z]. [A-Za-z-] /
(это позволяет использовать дефисы в качестве первой буквы)
Отличным ресурсом для изучения и тестирования регулярных выражений является regex101.com.
Комментарии:
1. Ваше второе регулярное выражение не гарантирует, что для инициалов используются варианты верхнего регистра
2. Правильно, вот почему я сказал «Если вас не волнует регистр …»
3. Первый вариант отлично работал в спецификации редактирования текста Google Forms. Спасибо! Теперь мне не нужно вручную редактировать опечатки.
4. Рад, что помог! Пожалуйста, отметьте вопрос как ответ.
Ответ №2:
Регулярное выражение для вашего формата будет
([A-Z]). ([A-Z])w
В Сети также есть множество инструментов для генерации и тестирования регулярных выражений.