Как я могу проверить ввод полного имени в форме, используя JavaScript?
Я хотел бы написать функцию для проверки ввода полного имени в форме с Javascript:
с одним словом все будет в порядке, строка с каким-нибудь пустым символом среди фамилии, отчества тоже, но я не хочу никаких цифр.
Любое предложение?
2 ответа
Есть несколько способов написать это, но, просто, регулярное выражение
/^[a-zA-Z ]+$/
должен работать на вас. Он найдет любую комбинацию букв и пробелов, но без цифр.
Изменить, чтобы добавить информацию из моего комментария, который я считаю важным:
Вы также можете добавить апостроф и дефис в скобках, поскольку ирландские и итальянские имена включают первые (О'Доннелл, Д'Амброзио), а у некоторых людей есть дефисные фамилии (Клод Леви-Стросс, Има Пейдж-Тернер и т. Д.)..).
Это приведет к следующему выражению:
/^[a-zA-Z'- ]+$/
Попробуйте этот RegEx для максимальной совместимости:
Не забывайте избегать одинарных кавычек ('), если вы помещаете это в строку JavaScript, заключенную в одинарные кавычки.
^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$
Пример:
function checkName(eid){ alert(/^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$/.test(document.getElementById(eid).value)? 'Congratulations! You entered a valid name.' : 'Sorry, You entered an invalid name. Please try again.');};
*
{
color:#535353;
font-family:Arial, Helvetica, Sans-Serif;
}
input:valid
{
background-color: #DEFFDF;
}
input:invalid
{
background-color: #C7D7ED;
}
<form action="#" method="post" onsubmit="checkName('full_name');return false;">
<label for ="full_name">Your Name: </label>
<input type="text" name="full_name" id="full_name" maxlength="85" pattern="^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$" title="Please enter your FULL name." style='width:200px;height:auto;' required>
<br><br>
<button type="submit">Submit</button>
<button type="reset">Reset</button>
</form>
Я бы посоветовал не прилагать столько усилий для проверки данных через JS. Если у пользователя отключен JS, вы получите данные, которые вам не нужны в базе данных.
Подтвердите его через серверную часть.
Теперь, что касается вашего вопроса, я бы попробовал с регулярными выражениями.