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