Я ищу регулярное выражение в PHP, которое может сделать для меня следующее:Как я могу проверить поле имени, чтобы разрешить только одно пространство, и начинать и заканчивать буквой в PHP?
У меня есть поле имени для имени человека. Я хотел бы позволить человеку фактически ввести два имени в поле имени. Каждое имя должно начинаться с заглавной буквы, заканчиваться буквой и, если необходимо, может включать в себя одиночную кавычку или тире. Между именами допускается одно пространство. Следующие имена были бы приемлемы:
Стивен О'Рейли
Джеймс Дин Петерсон
Джеймс-Дин Петерсон
Джеймс Дин-Петерсона
Два имени в первом поле имя не требуется, но это было бы допустимо. Вот регулярное выражение, я играл с:
if(!preg_match('/^[A-Z][a-z-]+[a-z]+([\s][A-Z][a-z-]+[a-z])?$/', $fname))
Это позволяет мне иметь два названия в поле, которые начинаются с заглавной буквы, а в конце строчной. Это также позволяет мне иметь тире (-), но я не могу заставить его дать одну цитату ('). Он также допускает множественные пробелы в конце имен, если нет других букв. Я могу устранить это с помощью функции trim(), так что неважно, но если бы я мог сделать ее недействительной с регулярным выражением, это было бы здорово.
В любом случае, может ли кто-нибудь предлагать регулярное выражение, которое позволяет одинарные кавычки, и делает любые пробелы после того, как последнее письмо не разрешено?
Хотя это возможно, для ваших бедных пользователей это очень громоздко. Например, вы можете получить имена во всех кепках. – stefgosselin
Но при текущем регулярном выражении они не могут вводить имя all-caps. На сайте также содержится подробная информация о том, что можно и не может ввести. Я верю, что люди знают, как правильно называть свое имя. –
Я согласен с stefgosselin - на самом деле нет причин делать это подробное регулярное выражение на имени - вы почти наверняка встретите кого-то, кто не будет проверять это сравнение, и .. вы делаете их заглавные буквы ???Для этого и нужен PHP. – Dave