Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
isalpha替代JavaScript?_Javascript_Validation - Fatal编程技术网

isalpha替代JavaScript?

isalpha替代JavaScript?,javascript,validation,Javascript,Validation,我一直在尝试用JavaScript验证表单的内容。我需要检查“Name”字段是否只包含字符和空格。如果存在任何其他字符,我希望显示警报。这在C和Java中很容易做到,但我似乎找不到JavaScript的好替代品。我读过关于正则表达式的书,但有没有一种更简单的替代方法,有点像内置函数?没有,据我所知没有 尽管您可以使用 /^[ a-z]+$/i.test(string) 与isalpha不同,它不支持区域设置,只适用于简单的拉丁字母,相当于强制isalpha在C区域设置中运行。使用正则表达式当然

我一直在尝试用JavaScript验证表单的内容。我需要检查“Name”字段是否只包含字符和空格。如果存在任何其他字符,我希望显示警报。这在C和Java中很容易做到,但我似乎找不到JavaScript的好替代品。我读过关于正则表达式的书,但有没有一种更简单的替代方法,有点像内置函数?

没有,据我所知没有

尽管您可以使用

/^[ a-z]+$/i.test(string)

isalpha
不同,它不支持区域设置,只适用于简单的拉丁字母,相当于强制
isalpha
C
区域设置中运行。

使用正则表达式当然更容易:

//Check for non-alphabetic characters and space
if(name.search(/[^A-Za-z\s]/) != -1)
  alert("Invalid name");
使用for循环:

//charCodeAt() gets the char code in a string
//Upper and lower bounds for upper case characters
var upperBoundUpper = "A".charCodeAt(0);
var lowerBoundUpper = "Z".charCodeAt(0);
//Upper and lower bounds for lower case characters
var upperBoundLower = "a".charCodeAt(0);
var lowerBoundLower = "z".charCodeAt(0);

for (var i = 0; i < name.length; i++) {
  var char = name.charCodeAt(i);
  if (char <= upperBoundUpper && char >= lowerBoundUpper)
    continue;
  else if (char <= upperBoundLower && char >= lowerBoundLower)
    continue;
  //Check for space
  else if (name[i] == " ")
    continue;
  else{  //Not recognized character - not valid
    alert("Invalid name");
    break;
  }
}
//charCodeAt()获取字符串中的字符代码
//大写字符的上下界
var upperBoundUpper=“A”.charCodeAt(0);
var lowerBoundUpper=“Z”。charCodeAt(0);
//小写字符的上下界
var upperBoundLower=“a”.charCodeAt(0);
var lowerBoundLower=“z”.charCodeAt(0);
对于(变量i=0;i
相对速度的jsPerf测试:

在我的测试中,for循环运行得更快。

你所说的“仅字符和空白”是什么意思?空白是字符,文本输入不能包含除字符以外的任何内容。我想你需要重新措辞。很抱歉,我指的是字母:)你能做到这是javascript吗?isalpha=unsigned((ch&(~(1)我认为这会起作用,但我认为会有更简单的方法(可能是ASCII转换和for循环?)。我对javascript一无所知,我还没有学会如何将文本转换为ASCII表示形式。我不相信空格被视为alpha。谢谢你的回答。这正是我想要的。regex版本当然更短,但我现在更熟悉使用ASCII字符来检查内容。但我会把它设为p阅读正则表达式:)速度测试的有趣结果。我认为有时使用正则表达式只是因为它们有黑色艺术的气息,尽管假设一行代码的执行速度会超过十行是很自然的。这并不等同于isAlpha(),因为它没有通过土耳其测试。这被标记为正确答案,但实际上不起作用。“a”的字符代码是97,“z”的字符代码是122。此代码正在检查是否有小于或等于97、大于或等于122的内容,这是不可能的。