相关疑难解决方法(0)

一个改进的isNumeric()函数?

在某些项目中,我需要验证一些数据并尽可能确定它是可以在数学运算中使用的javascript数值.

jQuery和其他一些javascript库已经包含了这样一个函数,通常称为isNumeric.stackoverflow上还有一篇文章被广泛接受为答案,与前面提到的库所使用的一般例程相同.

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
Run Code Online (Sandbox Code Playgroud)

作为我的第一篇文章,我无法在该帖子中回复.我接受的帖子的问题是,似乎有一些角落案例影响了我正在做的一些工作,所以我做了一些改变,试图解决我遇到的问题.

首先,如果参数是长度为1的数组,则上面的代码将返回true,并且该单个元素是上述逻辑认为是数字的类型.在我看来,如果它是一个数组,那么它不是数字.

为了缓解这个问题,我添加了一个检查来从逻辑中对数组进行折扣

function isNumber(n) {
  return Object.prototype.toString.call(n) !== '[object Array]' &&!isNaN(parseFloat(n)) && isFinite(n);
}
Run Code Online (Sandbox Code Playgroud)

当然,您也可以使用Array.isArray而不是Object.prototype.toString.call(n) !== '[object Array]'

编辑:我已经更改了代码以反映数组的通用测试,或者您可以使用jquery $.isArray或原型Object.isArray

我的第二个问题是负十六进制整数文字字符串("-0xA" - > -10)没有被计为数字.但是,正十六进制整数文字字符串("0xA" - > 10)被视为数字.我需要两个都是有效的数字.

然后我修改了逻辑以考虑到这一点.

function isNumber(n) {
  return Object.prototype.toString.call(n) !== '[object Array]' &&!isNaN(parseFloat(n)) && isFinite(n.toString().replace(/^-/, ''));
}
Run Code Online (Sandbox Code Playgroud)

如果你每次调用函数时都担心正则表达式的创建,那么你可以在一个闭包中重写它,就像这样

isNumber = (function () {
  var rx = /^-/;

  return function (n) {
      return Object.prototype.toString.call(n) !== '[object …
Run Code Online (Sandbox Code Playgroud)

javascript validation numbers isnumeric

39
推荐指数
1
解决办法
2433
查看次数

正则表达式[任意数字]

我需要在javascript中测试字符串中的"[any number]".我怎么配它呢?

哦,"["和"]"也需要匹配.

所以像"[1]"或"[12345]"这样的字符串是匹配的.

不匹配:"[23432"或"1]"

例如:

$('.form .section .parent').find('input.text').each(function(index){
      $(this).attr("name", $(this).attr("name").replace("[current]", "['"+index+"']"));
});
Run Code Online (Sandbox Code Playgroud)

我需要将输入字段名称替换为:"items [0] .firstname"改为"items [1] .firstname"谢谢

javascript regex jquery

30
推荐指数
3
解决办法
10万
查看次数

Javascript - 验证,仅限数字

我试图让我的登录表单只验证是否只输入了数字.如果输入只是数字,我可以工作,但是当我在数字后键入任何字符时,它仍然会验证等.12akf将起作用.凌晨1点就行了.我怎么能超越这个?

部分登录

<form name="myForm">
    <label for="firstname">Age: </label>
    <input name="num" type="text" id="username" size="1">
    <input type="submit" value="Login" onclick="return validateForm()">

function validateForm()
{

    var z = document.forms["myForm"]["num"].value;
    if(!z.match(/^\d+/))
        {
        alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
        }
}
Run Code Online (Sandbox Code Playgroud)

javascript validation numbers

28
推荐指数
6
解决办法
22万
查看次数

jquery:验证文本字段是否为数字

我有一个简单的问题 - 我想检查一个字段,看它是否为整数,如果它不是空白的话.我没有使用任何额外的插件,只是jQuery.我的代码如下:

if($('#Field').val() != "")
{
    if($('#Field').val().match('^(0|[1-9][0-9]*)$'))
    {
        errors+= "Field must be numeric.<br/>";
        success = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

......它似乎不起作用.我哪里错了?

我收到的错误是val() is not an object.

更新:事实证明,真正的问题是我设置了元素名称而不是Id.

validation jquery

23
推荐指数
2
解决办法
11万
查看次数

如何在javascript中验证数字(包括浮点数)

目前我正在使用此reg exp:

var valid = (value.match(/^\d+$/));
Run Code Online (Sandbox Code Playgroud)

但对于像"0.40"或"2.43"这样的数字,这不起作用.如何更改上面的reg exp以匹配浮点数?

javascript regex

21
推荐指数
4
解决办法
5万
查看次数

如何将一个字符串split()到一个整数数组

我有一个应该作为数组执行的字符串:

var q = "The, 1, 2, Fox, Jumped, 3, Over, 4";
var z = q.split(',');
Run Code Online (Sandbox Code Playgroud)

如果我使用split(),它将创建一个字符串数组:

[‘The’, '1', '2', ‘Fox’, ‘Jumped’, '3', ‘Over’, '4'] 
Run Code Online (Sandbox Code Playgroud)

我不需要那个.我需要一个像这样的数组:

[‘The’, 1, 2, ‘Fox’, ‘Jumped’, 3, ‘Over’, 4]
Run Code Online (Sandbox Code Playgroud)

指示哪个是字符串,哪个是数字.

javascript arrays string integer split

13
推荐指数
2
解决办法
5146
查看次数

如何检查JavaScript编号是否真实有效?

我的代码是:

function isNumber(n){
return typeof n == 'number' && !isNaN(n);
}

window.onload=function(){
var a=0,b=1,c=2.2,d=-3,e=-4.4,f=10/3;
var shouldBeTrue=[a,b,c,d,e,f];

var aa="0",bb="1",cc="2.2",dd="-3",ee="-4.4",ff="10/3";
var shouldBeFalse=[aa,bb,cc,dd,ee,ff];

var aaa,bbb=true,ccc=false,ddd=document.getElementsByTagName('html');
var alsoTheseBeFalse=[aaa,bbb,ccc,ddd,""," ",,null,NaN];

for(var i=0;i<shouldBeTrue.length;i++)
    if(isNumber(shouldBeTrue[i]) != true) alert("x");
for(i=0;i<shouldBeFalse.length;i++)
    if(isNumber(shouldBeFalse[i]) != false) alert("x");
for(i=0;i<alsoTheseBeFalse.length;i++)
    if(isNumber(alsoTheseBeFalse[i]) != false) alert("x");
}
Run Code Online (Sandbox Code Playgroud)

我应该检查什么以确保我的功能在所有方面都是101%完美?(另外,如果你知道更好的功能请告诉我)

javascript int numbers

12
推荐指数
1
解决办法
1万
查看次数

检查变量是否包含Javascript中的数值?

在PHP中,它非常简单:

is_numeric(23);//true
is_numeric("23");//true
is_numeric(23.5);//true
is_numeric(true);//false
Run Code Online (Sandbox Code Playgroud)

但是我如何在Javascript中执行此操作?我可以使用正则表达式,但是有一个函数吗?

javascript

11
推荐指数
3
解决办法
2万
查看次数

为什么angular.isNumber()没有按预期工作?

好像AngularJS似乎angular.isNumber不起作用.它不适用于数字字符串.难道我做错了什么?我应该用isNaN()吗?

angular.isNumber('95.55') == false
angular.isNumber('95.55' * 1) == true
angular.isNumber('bla' * 1) == true
angular.isNumber(NaN) == true
Run Code Online (Sandbox Code Playgroud)

我需要一些东西来看看一个字符串是否是一个数字(当它实际上是)并且angular.isNumber()不会让我这样做,除非我乘以1,但如果我这样做那么它将永远是真的.另外NaN是不是一个数字(定义)等应该返回false.

javascript angularjs

11
推荐指数
1
解决办法
2万
查看次数

Ng显示变量是否为数字

我想只在值是数字时才显示元素.这该怎么做?我试过了 :

  • ng-show='angular.isNumber(10)'
  • ng-show='isNumber(10)'

angularjs angularjs-directive

10
推荐指数
1
解决办法
2万
查看次数