繁体   English   中英

确保Window.prompt返回的值仅包含字母

[英]Ensuring that the value returned by Window.prompt contains only letters

我正在尝试检查是否可以检查分配给变量的用户输入以确保它是字符串,而不是数字。 我尝试过使用typeof() ,但无论如何,用户输入都被标记为字符串,即使用户输入了数字。 例如:

var x = prompt("Enter a string of letters");
var y = typeof x;

if (y !== "string") {
    alert("You did not enter a string");
}

有什么我可以使用的类似于NaN功能,但对于字符串?

从doc 提示符

result = window.prompt(text, value);
  • result是一个包含用户输入的文本的字符串 ,或者值为null
  • text是要显示给用户的文本字符串。 此参数是可选的,如果在提示窗口中没有显示任何内容,则可以省略该参数。
  • value是一个字符串,包含文本输入字段中显示的默认值。 这是一个可选参数。 请注意,在Internet Explorer 7和8中,如果不提供此参数,则字符串“undefined”是默认值。

返回值是字符串null 在您的示例中,无论用户输入如何, y始终是字符串对象

在您的情况下,如果您想要过滤用户输入非字母,您可以使用正则表达式,如:

 var x = prompt("Enter a string of letters"); if (!/^[a-zA-Z]+$/.test(x) || !x) { alert("You did not enter a string"); } 

prompt返回的结果将始终是一个字符串(或者可能是值null )。 这就是方法返回的内容。 重要的是要记住"123"实际上是一个字符串,即使它也是一个数字的字符串表示。

所以,在你的情况下,你并不是真的想确定它是否是一个字符串; 你试图确保它不是一个数字。 更一般地说,你的问题是“一串字母”。

这只意味着您需要验证结果字符串是否仅包含字母,而不包含数字或符号。 您可以使用简单的正则表达式执行此操作:

 var x = prompt("Enter a string of letters"); if (!x || !x.match(/^[az]+$/i)) { alert("Only letters are allowed"); } 

这里要注意几点。 这将不允许空白字符串"" ; 如果你需要允许,在正则表达式中将+ (一个或多个量词)更改为* (零或更多)。 您还必须显式检查null (通过执行x != null )而不是使用!x ,因为""是假的。

这个正则表达式也不允许使用空格。 您可以在字符类中包含空格匹配器以允许它。

尝试使用isNaN(Number(x))来检查它。

var x=prompt("Enter a string");
if(!isNaN(Number(x)){
   alert("You are entering a number!"); 
}

prompt()返回的值是字符串,如果用户取消,则返回null

您可能想要确认的是输入是按字母顺序排列的。 您可以使用正则表达式执行此操作,例如^[az]+$

试试这段代码:

x = prompt("Enter a string of letters");

if (/^[a-z]+$/.test(x) {

  alert("You did not enter a string");

}

即使输入数字,x的类型也将是字符串或null。

暂无
暂无

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

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