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

时间:2013-04-29 06:26:12

标签: javascript

我需要在一个输入框中验证用户输入的姓名和姓氏。我必须确保他们只使用字母而不是其他字符,并且是大写或小写的。约翰史密斯。我可以使用正则表达式找到很多方法来执行此操作,但该任务特别要求不使用正则表达式。

即使有人指出我可以自己找到这些信息的地方。

谢谢

2 个答案:

答案 0 :(得分:1)

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

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 :(得分:0)

我有一种感觉,鉴于这个问题,最好保持解决方案简单。

请注意这一观察结果:

  1. 字符串可以像数组一样索引,并且长度类似于数组。因此,字符串可以像数组一样循环。
  2. 字符串是词汇排序的。也就是说,"a" < "b""A" < "B"都是正确的。
  3. String.toLower可以将"A"翻译为"a"
  4. 然后我们可以开始一种基本的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
       ..
    

    当然,问题可能不仅仅是确保字母都在{a-z,A-Z,space}中。考虑这些输入 - 它们有效吗?

    • “John Doe”
    • “JOHNDOE”
    • “John”