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

Я использую для проверки формата имен в моих приложениях 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'

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

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

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

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

0 голосов
/ 10 апреля 2019

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

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

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

В сети есть замечательных ресурсов для изучения регулярных выражений, если вам интересно.

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