我需要在一个输入框中验证用户输入的姓名和姓氏。我必须确保他们只使用字母而不是其他字符,并且是大写或小写的。约翰史密斯。我可以使用正则表达式找到很多方法来执行此操作,但该任务特别要求不使用正则表达式。
即使有人指出我可以自己找到这些信息的地方。
谢谢
答案 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)
我有一种感觉,鉴于这个问题,最好保持解决方案简单。
请注意这一观察结果:
"a" < "b"
和"A" < "B"
都是正确的。"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
..
当然,问题可能不仅仅是确保字母都在{a-z,A-Z,space}中。考虑这些输入 - 它们有效吗?