检查输入的数字是否是 jquery 中的数字

IT技术 javascript jquery validation
2021-03-11 19:08:30

我有一个简单textbox的用户输入数字。
jQuery 是否具有isDigit允许我在用户输入数字以外的内容时显示警告框功能?

该字段也可以有小数点。

6个回答

我建议使用正则表达式:

var intRegex = /^\d+$/;
var floatRegex = /^((\d+(\.\d *)?)|((\d*\.)?\d+))$/;

var str = $('#myTextBox').val();
if(intRegex.test(str) || floatRegex.test(str)) {
   alert('I am a number');
   ...
}

或者根据@Platinum Azure 的建议使用单个正则表达式:

var numberRegex = /^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/;
var str = $('#myTextBox').val();
if(numberRegex.test(str)) {
   alert('I am a number');
   ...
}    
数字也可以有小数。5001.10 应该是可以接受的
2021-04-22 19:08:30
应该指定的。:-) 您可以对所有(很多)可能的数字使用这样的正则表达式:/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/如果您愿意,这将允许在最后使用小数、符号甚至科学记数法。您可以根据需要删除各个部分(如果您需要帮助确定哪个部分是什么,请使用 Google Perl 样式的正则表达式,但它应该相当直观)。
2021-05-10 19:08:30

忘记正则表达式。JavaScript 有一个内置函数isNaN()

isNaN(123)           // false
isNaN(-1.23)         // false
isNaN(5-2)           // false
isNaN(0)             // false
isNaN("100")         // false
isNaN("Hello")       // true
isNaN("2005/12/12")  // true

就这样称呼它:

if (isNaN( $("#whatever").val() )) {
    // It isn't a number
} else {
    // It is a number
}
isNaN 不会确保您的输入不包含空格。isNaN(" 42 ") === false
2021-04-24 19:08:30
您可以使用以下内容修剪空格: YouValue.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 更多修剪实现:blog.stevenlevithan.com/archives/faster-trim-javascript
2021-04-24 19:08:30
@karim79:并非 isNaN 不接受字符串参数。isNaN("42") 返回假,isNaN("42.2") 返回假,isNaN("42.2.3") 返回真。developer.mozilla.org/en/Core_JavaScript_1.5_Reference/... 上的文档指出“isNaN 尝试将传递的参数转换为数字。如果参数无法转换,则返回 true;否则返回 false”。
2021-05-01 19:08:30
isNaN() 不是检查有效数字的可靠函数,因为它也为布尔值返回 false 例如 isNaN(true) -> return value = false
2021-05-09 19:08:30
有趣的方法,但我个人认为正则表达式比双重否定更清晰(不是非数字是数字)。尽管我倾向于将正则表达式放入一个不错的实用函数 isDigit() 中。
2021-05-18 19:08:30

有一种更简单的方法可以检查变量是否为整数。您可以使用 $.isNumeric() 函数。例如

$.isNumeric( 10 );     // true

这将返回真,但如果你用一个字符串代替 10,你会得到假。

我希望这对你有用。

The signature '(value: any): boolean' of '$.isNumeric' is deprecated.ts(6387)
2021-05-19 19:08:30

以下脚本可用于检查值是否为有效整数。

  function myFunction() {
    var a = parseInt("10000000");
    if (!isNaN(a) && a <= 2147483647 && a >= -2147483647){
    alert("is integer"); 
    } else {
     alert("not integer"); 
    }
}

值验证不是 jQuery 的责任。您可以为此使用纯 JavaScript。我想到的两种方法是:

/^\d+$/.match(value)
Number(value) == value
不知道为什么没有人赞成这个答案。我使用了 Number(value).... 它的完美。
2021-04-23 19:08:30
@systemPAUSE 提到用户输入和“数字”让我认为该值是一个字符串,而==.
2021-04-25 19:08:30
由于您的第二个示例使用 == 而不是 ===,因此在右侧键入 coercion 不会导致表达式始终为真吗?
2021-05-13 19:08:30