Javascript 使用包含“a”的数字发出&引用;比如1.11或1.111

Javascript 使用包含“a”的数字发出&引用;比如1.11或1.111,javascript,Javascript,用户需要在文本框中输入一个介于0和9999之间的数字,我想检查此字符串是否为介于0和9999之间的有效整数。如果用户在文本框中输入多个数字,例如16和1,则验证应返回false 如果字符串中有一个“.”,我有一个问题。1.11返回true,但应返回false,而.111变为0.111,并返回true而不是false。我希望带“.”的字符串返回false。我该怎么做 我测试了以下案例: 0 returns true 1117 returns true 9999 returns true 17000

用户需要在文本框中输入一个介于0和9999之间的数字,我想检查此字符串是否为介于0和9999之间的有效整数。如果用户在文本框中输入多个数字,例如16和1,则验证应返回false

如果字符串中有一个“.”,我有一个问题。1.11返回true,但应返回false,而.111变为0.111,并返回true而不是false。我希望带“.”的字符串返回false。我该怎么做

我测试了以下案例:

0 returns true
1117 returns true
9999 returns true
17000 returns false
0,1 returns false
A1 returns false
16 1 returns false
16_1 returns false
1.11 returns true but it should return false
.111 returns true but it should return false
1.11和.111无法正常工作,因为它们返回的是true而不是false。

代码有什么问题

handlers.CheckTextboxstring = function (args, context)
{
  var TextboxNumber = validate(args.Textboxstring);
  return TextboxNumber.NewNumber;
}

function validate(str)
{
    if(!isEmptyOrSpaces(str))
    {
      let num=Number(str);
      if(num!==NaN)
      {
         if(num >= 0 && num <= 9999)
         {
           return{NewNumber: "true, number is in range."};
         }
         else
         {
            return{NewNumber: "false, number not in range."};
         }
      }
      else
      {
          return{NewNumber: "false, string is NaN."};
      }
    }
    else
    {
        return{NewNumber: "false, the string is not a number."};
    }
}

function isEmptyOrSpaces(str)
{
    return str === null || str.match(/^ *$/) !== null;
}
handlers.CheckTextboxstring=函数(args,上下文)
{
var TextboxNumber=validate(args.Textboxstring);
返回TextboxNumber.NewNumber;
}
函数验证(str)
{
if(!isEmptyOrSpaces(str))
{
设num=Number(str);
如果(num!==NaN)
{

如果(num>=0&&num,可以使用正则表达式查找一到四位数字

功能检查{
返回/^([1-9]\d{0,3}|0)$/.test;
}
['0'、'1117'、'9999'、'17000'、'0,1'、'A1'、'161'、'16_1'、'1.11'、'.111'、'1.0'、'00'].map(s=>console.log(check(s));
JavaScript表示浮点数,这意味着它可以处理整数和小数。从这个意义上说,没有什么“错误”对于您的代码,您只需要添加额外的检查,以确保读入的
数字实际上是一个整数

为此,您可以使用在对值进行强制转换后进行检查,也可以跳过读取并使用而不是
Number()
进行检查

或者,如@NinaScholz所指出的,如果您想采取完全不同的方法,您可以直接使用正则表达式来确保字符串中除了1到4个数字之外没有任何内容


旁注:您的代码中有
if(num!==NaN)
,但出于我不在此赘述的原因,
NaN!==NaN
仍将返回
true
。请改用。

关于
0000
?关于检查
Number.isInteger(num)
之类的东西呢?为什么不将正则表达式仅用于^[0-9]*$then use condition(num>=0&&num如果他们不需要前导零,那么
/^0$| ^[1-9][0-9]{0,3}$/
@georg Thanx。我不需要前导零。如果我使用函数检查,是否仍然需要进行NaN检查?例如:Number.isNan(s)在函数的开头?不,您可以只使用正则表达式。请参见“编辑”中的“仅为零”或“不带前导零的数字”。