我想用Javascript编写一个函数来验证表单中的全名输入:
一个单词就可以了,姓名中有一些空白字符的字符串,中间名也是,但我不想要任何数字。
有什么建议吗?
答案 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>
<button type="reset">Reset</button>
</form>