Улучшение приведенного ниже регулярного выражения для имен в США и Великобритании

#regex #validation #alphanumeric

#регулярное выражение #проверка #буквенно-цифровой

Вопрос:

Я хочу проверить английские имена. Как я мог бы улучшить это регулярное выражение, чтобы гарантировать, что дефис, запятая или апостроф не будут первыми или последними в строке? Кроме того, дефису или апострофу всегда должна предшествовать буква, которая следует за буквой.

У меня есть регулярное выражение : [a-zA-Z-', ] .

Насколько я понимаю, это позволит использовать все буквы, во всех случаях дефисы, запятые и апострофы вместе с пробелами в любом месте строки.

Довольно новичок в языке, поэтому просто разбираюсь в этом.

Спасибо.

Комментарии:

1. Знает ли функция, что ей присваивается имя, или это может быть что-то другое, и ей нужно определить, является ли это именем?

2. Он ожидает имя

3. Почему это было отклонено, это кажется разумным вопросом?

4. Некоторым людям здесь не нравятся новички, и они понижают их, даже не сообщая им, делают ли они что-то не так или то, что они считают слишком простым, чтобы спрашивать об этом.

Ответ №1:

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

 ^[A-Z][A-Za-z'-] [a-z](,? [A-Z][A-Za-z'-] [a-z])*$
  

Это будет работать с такими именами, как O'Harry Jefferson-Wayne , но будет отклонять слова, не заканчивающиеся маленькой английской буквой.

Суть в том, что это [A-Z] начало имени, [A-Za-z'-] продолжение, [a-z] конец имени. затем повторяющаяся группа необязательных имен с необязательным разделителем-запятой, но требуется пробел.

Я потратил больше времени на написание примеров для тестирования в http://www.regexplanet.com /. Вот где я практикую свои регулярные выражения, когда разрабатываю. Вы должны попробовать.