Регулярное выражение для имени пользователя, которое соответствует только формату «F. Lxxxxx»

#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 
  

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