Обновите регулярное выражение, чтобы исключить точки, за которыми следует что-либо, кроме пробела

Я использую для проверки формата имен в моих приложениях rails. Мне нужно обновить его, чтобы он не принимал что-то вроде mike.jones

текущее регулярное выражение

/([A-Za-z ',.-]+)/

допустимые имена

'Baxter',
'Doe de Sour Jr.',
'Smith-Brown',
"Mathias d'Arras",
"d'Arras",
'King, Jr.',
'Cotton III'

недопустимые имена

'Baxter2',
'user@gmail',
'#michael',
'tina.fay'

Как насчет Mr. Smith или J. K. Rowling?

CAustin 10.04.2019 02:39

@CAustin Они должны быть действительными

Antarr Byrd 10.04.2019 02:47

@CarySwoveland Я видел другой ответ. Хотя принятый не работает на рубулярный, он проходит в моем характеристики.

Antarr Byrd 10.04.2019 03:26

@CarySwoveland Возможно, я скоро изменю ответ. В моей спецификации была проблема.

Antarr Byrd 10.04.2019 03:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Затем вам просто нужно переместить . в конец вашего регулярного выражения (и экранировать его), чтобы вы по-прежнему получали людей с Jr. в конце их имени:

/([A-Za-z ',-]+\.?)/

И он должен работать нормально. Попробуйте онлайн!

Есть несколько отличные ресурсы онлайн для изучения Regex, если вам интересно.

Это не регулярное выражение по вашей ссылке. Якоря? А как же "Mr. Smith"? (См. комментарий к вопросу.)

Cary Swoveland 10.04.2019 03:10
Ответ принят как подходящий

Ответ немного сложен, когда вам нужно учитывать точки, которые встречаются в середине допустимых имен. Судя по вашему описанию, правило таково, что периоды допустимы, если сразу за ними не следуют буквы. Это можно сделать с помощью регулярного выражения:

^(?!.*\.\S)[A-Za-z ',.-]+$

демо: https://regex101.com/r/LkUl38/2

@CarySwoveland Я не уверен, что это правда. Что, если точка, за которой следует запятая, допустима, например?

CAustin 10.04.2019 03:32

@AntarrByrd - Похоже, ты не знаешь, чего хочешь. Пожалуйста, отредактируйте свой ответ, указав, в какой категории вы ожидаете, что каждый из них будет в: P.A., P.A, p.a., pa., p.a. и PA.

Addison 10.04.2019 03:54

@Addison Да, я понял это. Вот почему я удалил комментарий. Я пока исключим этот пример. Мне трудно понять, что действительно, так как мне не дали четких требований.

Antarr Byrd 10.04.2019 03:58

Антарр, вам просто нужно сделать предположение о том, что вам нужно, и соответствующим образом сформулировать свой вопрос. Это зависит от вас - мы не хотим об этом слышать. Примеры хороши для того, чтобы помочь читателю понять вопрос, но они не заменяют точное изложение проблемы. Вам нужно начать свой вопрос с чего-то вроде: «Мне нужно проверить имена в моем приложении. Имена могут содержать буквы, пробелы и любые символы ',.-, при условии, что за каждой точкой (если есть) должен следовать пробел или быть в конце строки».

Cary Swoveland 10.04.2019 04:20

Другие вопросы по теме