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

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

У меня есть RegEx: [a-zA-Z-', ].

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

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

Спасибо.


person Jordan    schedule 06.10.2016    source источник
comment
Знает ли функция, что ей присвоено имя, или это может быть что-то еще, и она должна определить, является ли это именем?   -  person coladict    schedule 06.10.2016
comment
Он ожидает имени   -  person Jordan    schedule 06.10.2016
comment
Почему это было отклонено, это кажется разумным вопросом?   -  person Jordan    schedule 06.10.2016
comment
Некоторым здесь не нравятся новички, и они опускают их, даже не сообщая им, что они делают что-то не так или что они считают слишком простым, чтобы спрашивать.   -  person coladict    schedule 06.10.2016


Ответы (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/. Вот где я практикую свои регулярные выражения во время разработки. Тебе следует это попробовать.

person coladict    schedule 06.10.2016