繁体   English   中英

验证名字和姓氏(不使用正则表达式)

[英]Validate First and Last name (not using regular expression)

我需要在一个输入框中验证用户输入的名字和姓氏。 我必须确保它们仅使用字母,而不使用其他字符,并且使用大写或小写形式,例如:John Smith。 我可以找到很多使用正则表达式执行此操作的方法,但是该任务明确要求不要使用正则表达式。

即使有人将我指向可以自己找到此信息的地方。

谢谢

只需检查每个字母,看看它是否有效。 因此,您将创建一个有效字符数组,然后确保每个字符都位于该数组中。

function validate_name(name) {
  var alphabet = 'abcdefghijklmnopqrstuvwxyz';
  alphabet = alphabet + ' ' + alphabet.toUpperCase();
  alphabet = alphabet.split(''); //turn it into an array of letters.
  for (i=0; i<name.length; i++) {
    if (!~alphabet.indexOf(name.charAt(i)) { //!~ just turns -1 into true
       return false;
    }
  }

  return true;
}

我觉得,考虑到这个问题,最好使解决方案保持简单。

请注意以下观察:

  1. 字符串可以像数组一样被索引,长度可以像数组一样。 因此,字符串可以像数组一样循环。
  2. 字符串按词法排序。 即, "a" < "b""A" < "B"都为真。
  3. String.toLower可以将"A"转换为"a"

然后,我们可以开始一个基本的C风格方法:

for (var i = 0; i < inp.lenth; i++) {
   var ch = inp[ch];
   if (ch == " ") ..              // is space
   if (ch >= "a" && ch <= "z") .. // lowercase English letter
   ..

当然,问题可能不仅仅在于确保字母全都位于{az,AZ,space}中。 考虑这些输入-它们有效吗?

  • “约翰·多伊”
  • “ JohnDoe”
  • “ 约翰 ”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM