如何使用javascript验证表单中的全名输入?

时间:2010-02-17 17:03:04

标签: javascript

我想用Javascript编写一个函数来验证表单中的全名输入:

一个单词就可以了,姓名中有一些空白字符的字符串,中间名也是,但我不想要任何数字。

有什么建议吗?

3 个答案:

答案 0 :(得分:4)

有几种方法可以写这个,但简单来说就是正则表达式

/^[a-zA-Z ]+$/ 

应该适合你。它会找到字母和空格的任意组合,但没有数字。

编辑以添加评论中的信息,我觉得这很重要:

  

您可能还希望在括号之间添加撇号和连字符,因为爱尔兰语和意大利语的名字包括前者(O'Donnell,D'Ambrosio),而且有些人使用带有连字符的姓氏(Claude Levi-Strauss,Ima Page-特纳等。)。

这将产生以下表达式:

/^[a-zA-Z'- ]+$/ 

答案 1 :(得分:3)

我建议不要花太多精力通过JS验证数据。如果用户禁用了JS,您将最终获得数据库中不需要的一些数据。

通过服务器端验证。

现在,关于你的问题,我会尝试使用正则表达式。

答案 2 :(得分:0)

尝试使用此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>