Для проверки веб-сайта мне нужна проверка имени и фамилии.
Имя должно содержать только буквы, может состоять из нескольких слов с пробелами и содержать не менее трех символов, но не более 30 символов. Пустая строка не должна быть подтверждена (например , Джейсон , Ясон , Джейсон Смит , Джейсон Смит , Джейсон , Джейсон Смит , Джейсон Смит и Джейсон Смит ).
Фамилия должна состоять из одного слова, только букв, не менее трех, но не более 30 символов. Пустые строки не должны проверяться (например, lazslo , Lazslo и LAZSLO ).
regex
validation
Hellnar
источник
источник
Ответы:
Не забывайте о таких именах, как:
Это должно помочь в большинстве случаев:
/^[a-z ,.'-]+$/i
ИЛИ Поддержка международных имен с помощью супер-сладкого юникода:
/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/u
источник
.
регулярных выражениях - особенно (десятичная точка / точка / точка), поскольку это подстановочный знак регулярного выражения =)őŐűŰ
, отсутствуют венгерские символы , также польские символыłŁ
, не говоря уже о ряде литовских и латышских символов. Скорее попробуйте найти библиотеку, которая преобразует экзотические символы в правильную версию без акцента, а затем напишите/^[a-z ,.'-]+$/i
регулярное выражение.陳大文
здесь неверное имя?/^[\p{L}'][ \p{L}'-]*[\p{L}]$/u
, но довольно щадящий.Вы делаете ложные предположения о формате имени и фамилии. Вероятно, лучше вообще не проверять имя, кроме проверки того, что оно пустое.
источник
Пройдя все эти ответы, я нашел способ создать крошечное регулярное выражение, которое поддерживает большинство языков и допускает только символы слова. Он даже поддерживает некоторые специальные символы, такие как дефисы, пробелы и апострофы. Я тестировал Python, и он поддерживает следующие символы:
Поддерживаемые символы:
источник
^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
Я создал настраиваемое регулярное выражение для работы с именами:
Я пробовал эти типы имен и нашел, что они отлично работают
Мой RegEx выглядит так:
Модель MVC4:
Обратите внимание на двойное значение
\\
для escape-символовДля тех из вас, кто плохо знаком с RegEx, я подумал, что добавлю объяснение.
источник
Я искал и искал, играл и играл с ним, и хотя он не идеален, он может помочь другим, пытающимся проверить имя и фамилию, которые были предоставлены как одна переменная.
В моем случае это переменная $ name.
Я использовал следующий код для своего PHP:
Я сам изучаю RegEx, но у меня есть объяснение кода, предоставленное приятелем RegEx.
Вот:
Утвердить позицию на границе слова «\ b»
Сопоставьте указанное ниже регулярное выражение и зафиксируйте его соответствие с номером обратной ссылки 1
«([AZ] {1} [az] {1,30} [-] {0,1} | [AZ] {1} [- \ '] { 1} [AZ] {0,1} [az] {1,30} [-] {0,1} | [az] {1,2} [- \ '] {1} [AZ] {1} [ AZ] {1,30}) {2,5} »
От 2 до 5 раз, как можно больше раз, отдавая по мере необходимости (жадно) «{2,5}»
* МНЕ НУЖДАЕТСЯ ЗДЕСЬ ПОМОЩЬ В ПОНИМАНИИ РАСШИРЕНИЯ ДАННОЙ ЗАПИСИ *
Примечание: я повторил саму группу захвата. Группа захватит только последнюю итерацию. Поместите группу захвата вокруг повторяющейся группы, чтобы захватить все итерации. «{2,5}»
Сопоставьте любое из приведенных ниже регулярных выражений (попытка следующей альтернативы только в случае неудачи) «[AZ] {1} [az] {1,30} [-] {0,1}»
Соответствует одному символу в диапазоне от «A» до «Z» «[AZ] {1}»
Ровно 1 раз «{1}»
Соответствует одному символу в диапазоне от «a» до «z» «[az] {1,30}»
От одного до 30 раз, как можно больше раз, отдавая по мере необходимости (жадно) «{1,30}»
Соответствует одному символу из списка «-» «[-] {0,1}»
От нуля до единицы, столько раз, сколько возможно, отдавая по мере необходимости (жадно) «{0,1}»
Или сопоставьте регулярное выражение номер 2 ниже (попытка следующей альтернативы только в случае неудачи) «[AZ] {1} [- \ '] {1} [AZ] {0,1} [az] {1,30} [ -] {0,1} »
Соответствует одному символу в диапазоне от «A» до «Z» «[AZ] {1}»
Ровно 1 раз «{1}»
Соответствует одному символу, присутствующему в списке ниже «[- \ '] {1}»
Ровно 1 раз «{1}»
Один из символов «-» «-» A 'символ «\'»
Соответствует одному символу в диапазоне от «A» до «Z» «[AZ] {0,1}»
От нуля до единицы, столько раз, сколько возможно, отдавая по мере необходимости (жадно) «{0,1}»
Соответствует одному символу в диапазоне от «a» до «z» «[az] {1,30}»
От одного до 30 раз, как можно больше раз, отдавая по мере необходимости (жадно) «{1,30}»
Соответствует одному символу из списка «-» «[-] {0,1}»
От нуля до единицы, столько раз, сколько возможно, отдавая по мере необходимости (жадно) «{0,1}»
Или сопоставьте регулярное выражение номер 3 ниже (вся группа не справится, если это не соответствует) «[az] {1,2} [- \ '] {1} [AZ] {1} [az] {1,30} »
Соответствует одному символу в диапазоне от «a» до «z» «[az] {1,2}»
От одного до двух раз, как можно больше раз, отдавая по мере необходимости (жадно) «{1,2}»
Соответствует одному символу в диапазоне от «» до «'» «[- \'] {1}»
Ровно 1 раз «{1}»
Соответствует одному символу в диапазоне от «A» до «Z» «[AZ] {1}»
Ровно 1 раз «{1}»
Соответствует одному символу в диапазоне от «a» до «z» «[az] {1,30}»
От одного до 30 раз, как можно больше раз, отдавая по мере необходимости (жадно) «{1,30}»
Я знаю, что эта проверка полностью предполагает, что каждый человек, заполняющий форму, имеет западное имя, и это может исключить подавляющее большинство людей в мире. Однако я считаю, что это шаг в правильном направлении. Возможно, это регулярное выражение слишком простое, чтобы гуру могли его упрощенно рассматривать, или, может быть, есть какая-то другая причина, по которой мне не удалось найти приведенный выше код в моих поисках. Я потратил слишком много времени, пытаясь разобраться в этом вопросе, вы, вероятно, заметите, насколько я туманный, если вы посмотрите на названия моих тестов ниже.
Я протестировал код на следующих именах, и результаты указаны в скобках справа от каждого имени.
Если у вас есть базовые имена, их должно быть от одного до пяти, чтобы приведенный выше код работал, которые похожи на те, которые я использовал во время тестирования, этот код может быть для вас.
Если у вас есть какие-либо улучшения, дайте мне знать. Я только нахожусь на ранней стадии (первые несколько месяцев выяснения RegEx.
Спасибо и удачи, Стив
источник
Имя будет
Если вам нужно, чтобы вся часть имени была короче 30 букв, я думаю, вам нужно проверить это отдельно. Выражение
".{3,30}"
должно это делать.Требования к вашей фамилии будут переведены на
но вы должны проверить это. Есть много фамилий, содержащих пробелы.
источник
Как сказал Мачек:
Не забывайте о таких именах, как:
и удалить такие случаи, как:
Это будет охватывать больше случаев:
источник
Я работаю над приложением, которое проверяет международные паспорта (ИКАО). Мы поддерживаем только английские символы. Хотя большинство иностранных национальных символов могут быть представлены символом латинского алфавита, например è через e, есть несколько национальных символов, которые требуют дополнительной буквы для их представления, например, немецкий умляут, который требует добавления 'e' к букве. например ä пользователя ae.
Это JavaScript Regex для имени и фамилии, которые мы используем:
Максимальное количество знаков в загранпаспорте - до 31 . Мы используем maxlength = "31", чтобы улучшить сообщения об ошибках, вместо того, чтобы включать их в регулярное выражение.
Вот фрагмент нашего кода в AngularJS 1.6 с обработкой формы и ошибок:
источник
Я использую:
И проверьте максимальную длину, используя другие средства
источник
Это регулярное выражение работает для меня (использовалось в Angular 8):
Он будет недействителен, если есть: -
Пример неверного имени (пробел)
Пример действительного имени:
источник
Для простоты вы можете использовать:
Что мне нравится в этом, так это то, что фамилия всегда стоит после имени, поэтому, если вы собираетесь ввести эти сопоставленные группы в базу данных, и имя - Джон М. Смит, 1-й группой будет Джон М. , а вторая группа - Смит.
источник
^ утверждает позицию в начале строки.
\ p {L} соответствует любым буквам любого языка
{2,} Квантификатор - совпадение от 2 до неограниченное количество раз, максимальное количество раз, возврат по мере необходимости (жадный)
$ утверждает позицию в конце строки
Таким образом, это должно быть имя на любом языке, содержащее не менее 2 букв (или символов) без цифр или других символов.
источник
Итак, с помощью customer мы создаем это сумасшедшее регулярное выражение:
источник
Для имени и фамилии на самом деле есть только 2 вещи, которые вы должны искать:
Вот мое регулярное выражение:
var regex = /^[A-Za-z-,pting{3,20}?=.*\d)/
1. Длина
Здесь {3,20} ограничивает длину строки от 3 до 20 символов.
2. Содержание
Информация в квадратных скобках [A-Za-z] позволяет использовать символы верхнего и нижнего регистра. Все последующие символы (- ,.) также разрешены.
источник
Это то, что я использую.
Это регулярное выражение принимает только имена с минимальным количеством символов от
A-Z a-z ,space and -
.Пример имен:
Максимальное количество символов в имени - 3. Если вы хотите изменить это, измените {3,} на {6,}
источник
Следующее выражение будет работать на любом языке, поддерживаемом UTF-16, и обеспечит наличие как минимум двух компонентов в имени (т.е. first + last), но также позволит использовать любое количество отчество.
На момент написания этой статьи кажется, что ни один из других ответов не соответствует всем этим критериям. Даже
^\p{L}{2,}$
самый близкий вариант не соответствует требованиям, поскольку он также соответствует «невидимым» символам, таким какU+FEFF
(Пробел нулевой ширины).источник
Попробуйте эти решения для максимальной совместимости, как я уже писал здесь :
JavaScript:
var nm_re = /^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$/;
HTML5:
<input type="text" name="full_name" id="full_name" pattern="^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$" required>
источник
Кажется, это работает для меня:
источник
Простая функция с использованием preg_match в php
источник
Полное имя с одним пробелом:
источник
Если вы хотите, чтобы полное имя состояло от 3 до 30 символов без ограничений на отдельные слова, попробуйте следующее:
Помните, что он исключает все иностранные буквы как é, è, à, ï.
Если вы хотите, чтобы к каждому отдельному слову применялось ограничение от 3 до 30 символов, Jens regexp сделает эту работу.
источник
источник