Как я могу проверить ввод полного имени в форме, используя 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>
&nbsp;&nbsp;
<button type="reset">Reset</button>
</form>

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

Подтвердите его через серверную часть.

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

Другие вопросы по тегам