Intereting Posts
Использование хэширования для безопасного хранения паролей пользователей Получить идентификатор экземпляра объекта в PHP Необходимое руководство по перенаправлению пользователя, если он не вошел в систему на панели администратора BackboneJS Сделать ID Integer Условия для разбивки на страницы, принадлежащие ToMany CakePHP 3 значения split из запроса http-запроса angularjs (данные) Mcrypt и base64 с PHP и c # PHP, как получить случайное число, отличное от значений массива Форматирование числа с ведущими нулями в PHP Некоторые электронные письма контактной формы не отправляются из-за фильтрации спама на хосте postgresql nextval вопрос о последовательностях Mysqli – При открытии двух соединений с одним и тем же хостом с mysql, но с разными базами данных, mysqli открывает соединение один раз? Алгоритм сортировки: итоговые суммы погашения Magento отсортированы неправильно, что приводит к неправильному исчислению налога на отправку Как я могу избежать <input file> удаляет значения после выбора файлов? Класс вызывает функцию в другом классе

Regex для проверки имен

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

  • Буквы (в верхнем и нижнем регистре)
  • -
  • пространства

Это довольно просто создать регулярное выражение. Проблема в том, что некоторые люди также используют специальные символы в своих именах. Например, предположите пользователя с именем gûnther или François. Существует множество персонажей, таких как û и ç, и их сложно перечислить.

Есть ли простой способ проверить правильные имена людей?

Есть ли простой способ проверить правильные имена людей?

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

 ^.+$ 

(Да, я знаю, что это, вероятно, не то, что ищет OP. Я просто подытоживаю более ранние вопросы и ответы).

/^\pL[\pL '-]*\z/ должен делать трюк

Короткий ответ – нет, нет простого способа. Вы затронули самую большую проблему. Есть так много особых случаев акцентов и лишних вещей, висящих в письмах, что это будет беспорядок, с которым нужно иметь дело. Кроме того, выражение с разбивкой на что-то вроде этого

 ^[CAPITAL_LETERS][ALL_LETERS_AND_SYMBOLS]*$ 

Это не так полезно, потому что «Abcd» соответствует этому, и вы не можете узнать, кто-то неправильно вводит информацию в поле, или если это был сумасшедший голливудский родитель, который на самом деле назвал своего ребенка тем или иным, как сэндвич или зонтик.

 ^.+$ 

Проверено ответ @jensgram, но это регулярное выражение принимает только все строки, поэтому оно не решает проблему, потому что строка должна быть именем, в этом случае это может быть что угодно.

 ^([AZ]{1})[az]+$ 

Мое регулярное выражение принимает только строку, где первый символ имеет верхний регистр, а следующие символы – буквы в нижнем регистре. Также просматривая другие ответы, это, кажется, кратчайшее регулярное выражение, а также самое простое.

Я не знаю точно, что вы пытаетесь сделать (подтвердите ввод имени пользователя?), Но в основном я бы оставил его простым – не удалось проверить, содержит ли текст цифры. И даже это, вероятно, довольно шаткий.

У меня такая же проблема. Сначала я придумал что-то вроде

  preg_match("/^[a-zA-Z]{1,}([\s-]*[a-zA-Z\s\'-]*)$/", $name)) 

но затем понял, что символы UTF-8 таких стран, как Швеция, Китай и т. д., например, Õ å, не будут разрешены, что важно для моего сайта, поскольку это международный сайт, и не хотят принуждать пользователей не входить в их реальную имя.

Я, хотя это может быть проще, вместо того, чтобы пытаться выяснить, как разрешить такие имена, как О'Мэлли и Брукс-Шнайдер и Õsmar (сделал это :), чтобы скорее поймать символы, которые вы не хотите, чтобы они вошли. Для меня было в основном избегать ввода кода xss JS. Поэтому я использую следующее регулярное выражение для фильтрации всех символов, которые могут быть вредными.

  preg_match("/[~!@#\$%\^&\*\(\)=\+\|\[\]\{\};\\:\",\.\<\>\?\/]+/", $name) 

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