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

How to validate a text string using javascript?

本文关键字:文本 字符串 验证 javascript 何使用      更新时间:2023-09-26

所以我想创建一个提示,询问客户端名称。我想确保它的格式是这样的:"姓氏,名字,中间首字母",并且名字不能超过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>

使用正则表达式查看以下简单步骤:

// 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. abcabc、xyzzyz、mr

非匹配:

  1. ,xyz,m
  2. 123,a,b
  3. 名字、中间、首字母有二十多个字符

完全符合您的标准:

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"。

您的代码应该是这样的:

<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在你的评论中提到的那样,如果用户没有中间名或姓氏,你的表格会让他们很难注册。

注意:这只是一个基本的验证,以确保名称有姓氏、名字和中间首字母,并且名称不超过OP提到的20个字符。当然,如果你想更准确和更先进,你可以使用Regex再次验证它。