0

I need to validate user input of first and last name in the one input box. I have to make sure they only use letters and no other characters and is in uppercase or lowercase ex.. John Smith. I can find a lot of ways to do this using regular expressions, but the task has specifically asked that no regular expressions be used.

Even if someone to point me to where I can find this information myself.

Thanks

4

2 回答 2

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;
}
于 2013-04-29T06:46:02.423 回答
0

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

请注意以下观察结果:

  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} 中。考虑这些输入——它们有效吗?

  • “约翰·多伊”
  • “约翰多”
  • “ 约翰 ”
于 2013-04-29T16:39:33.643 回答