确保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
函数的东西可以用于字符串?
从单据提示
result = window.prompt(text, value);
- 结果是一个字符串,包含用户输入的文本,或值null
- text是要显示给用户的文本字符串。此参数为可选,如果在提示窗口
- 值是包含文本中显示的默认值的字符串输入字段。它是一个可选参数。请注意,在Internet中Explorer 7和8,如果不提供此参数,则字符串"未定义"是默认值
返回值是字符串或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(/^[a-z]+$/i)) {
alert("Only letters are allowed");
}
这里有几点需要注意。这将不允许空白字符串""
;如果需要允许,请在正则表达式中将+
(一个或多个量词)更改为*
(零或更多)。您还必须显式检查null
(通过执行x != null
),而不是使用!x
,因为""
是false。
此正则表达式也不允许使用空格。您可以在字符类中包含空格匹配器来实现这一点。
尝试isNaN(Number(x))
检查。
var x=prompt("Enter a string");
if(!isNaN(Number(x)){
alert("You are entering a number!");
}
如果用户取消,prompt()
返回的值是字符串或null
。
您可能需要确认的是输入是按字母顺序排列的。您可以使用正则表达式来完成此操作,例如^[a-z]+$
试试这个代码:
x = prompt("Enter a string of letters");
if (/^[a-z]+$/.test(x) {
alert("You did not enter a string");
}
即使您输入了一个数字,x的类型也将是字符串或null。
相关文章:
- 如何访问对象内部的“categoryIds”字段/键,该对象包含mongodb's `ObjectId(s)`数
- HTML提交表单,同时包含空字段检查和按钮隐藏
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- jQuery将输入集中在下一个tr->td时,td包含一个输入字段,但从不关注html选择
- 如何使用Typescript创建一个包含对象的字段的新对象
- 使用 WYIHTML5 添加包含 gem 的新字段nested_form
- 从包含ng的字段中获取表单数据,而无需使用ng模型
- 如何访问嵌套的表单ng包含范围/字段
- 如果字段在几行空行之后包含前几个字符,则验证描述字段长度
- 大写输入字段中包含的每个单词
- 解析包含带$Parse的点字符的字段名称
- 包含与loop&公共字段
- Jquery验证字段是否包含逗号
- 查找包含子对象MongoDb和Node.js的特定字段的文档
- jQuery验证字段名包含方括号的组
- 如何使用JavaScript解析字段中包含换行符的CSV数据
- 使用ajax提交一个包含未知数量字段的html表单
- 用于对象AngularJs中包含的所有字段和数组的deepCopy
- 我的 JavaScript 需要什么条件?它是一个弹出一个对话框的脚本,其中包含字段的表单验证备注留空
- 将输入字段设置为包含 window.location.href