如何使用javascript验证文本字符串?

时间:2013-12-13 04:03:28

标签: javascript html

所以我想创建一个要求客户名称的提示。我想确保它以这种方式格式化:“姓氏,名字,中间名”,并且没有超过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>

3 个答案:

答案 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. abc,xyz,m
  2. abcabcabc,xyzzyz,先生
  3. 不匹配:

    1. ,xyz,m
    2. 123,a,b
    3. iammorethantwentycharactersfirstname,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'。