所以我想创建一个要求客户名称的提示。我想确保它以这种方式格式化:“姓氏,名字,中间名”,并且没有超过20个字符的名称。 这是我到目前为止所做的,但不知道从哪里开始。
<script language="JavaScript">
//Get the name
var name = prompt("What is your Name?");
//validate
if(name)
//output
document.write ("That is your name! :)");
else
document.write ("Please use the format Last name, first name, middle initial");
</script>
答案 0 :(得分:3)
使用正则表达式查看以下简单步骤:
// Get name
var name = prompt("What is your Name?");
// match name with regular expression
if (name.match("^[A-Za-z]{1,20}, [A-Za-z]{1,20}, [A-Za-z]{1,20}")) {
document.write("That is your name! :)");
} else {
document.write("Please use the format Last name, first name, middle initial");
}
结果:
匹配:
不匹配:
答案 1 :(得分:0)
您的代码应该是:
<script language="JavaScript">
//Get the name
var name = prompt("What is your Name?");
//validate
if(name && name.length <=20)
{
var i = name.split(',');
if(i.length<3){
document.write ("Please use the format Last name, first name, middle initial");
}else{
//output
document.write ("Your name is: " +name);
}
}else{
document.write ("Please use the format Last name, first name, middle initial");
}
</script>
但这是一个不太好的设计,因为正如@ Qantas94Heavy在你的评论中提到的那样,如果用户没有中间名或姓,你的表格将使他们难以注册。
注意:这只是一个基本的验证,以确保名称具有姓氏,名字和中间名首字母,并且名称不超过20个字符,如提到的OP。当然,如果您想要更准确和更先进,可以使用Regex再次验证它。
答案 2 :(得分:0)
完全符合您的条件:
var s = 'smith, john, j';
var isValid = /^\w+, \w+, \w$/.test(s) && s.replace(/[, ]/g,'').length < 21;
但这是非常具体的,并假设20个字符的限制适用于名称的各个部分,并且不包括任何空格,逗号等。顺便说一下,上面的连字符名称将失败,因此正则表达式可能需要:
/^[\w-]+, [\w-]+, \w$/;
允许说'Smith-Jones,Mary-Jo,A'。