Pure JavaScript: a function like jQuery's isNumeric()
纯javascript中是否有类似isNumeric的函数?
我知道jquery有检查整数的函数。
- 试试value => !isNan(+value)。
- isnan()开发人员.mozilla.org/en-us/docs/web/javascript/reference/…
- 想要添加isinteger(请注意,浮点数不是整数)developer.mozilla.org/en us/docs/web/javascript/reference/…
有没有isNumeric()型函数,但你可以添加你自己的: </P >
1 2 3
| function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
} |
注:由于parseInt()是不是一个适当的方式来检查它的值应不可以使用。 </P >
- 这个解决方案用于/taken from JQuery Library$.isnumeric(obj)api.jquery.com/jquery.isnumeric
- @matt my comment was aimed at the comment and the note in the answer stating parseIntwas the wrong way of doing this(then going ahead and using parseFloat),which doesn't really seem different.有趣的是,你是否会在所有情况下都能得到自己的结果(从白色的弦乐中分离出来,这是一些原因的回归true,so parseIntvs parseFloat)?我确信,在parseInt的功能上找不到一个单一的输入。
- @thor84no jsfiddle.net/fnpvf/17918
- 我会给你'.\d+'的区别,我想,但JS控制台比Fiddle更有用。Either way,that's the appropriate answer,not whatever the stuff about short-circuiting &&is about.自从Edoc1〔2〕以来,这种感觉应该比这更好。我自己做了一个游戏:JSFIDDLE.NET/D5CXDWUE/1
- 不要利用这个功能,它不适合于浮动。See JQuery's isNumerichere for ideas on implementing it.
- Isfinite("0")是真的。这就是为什么你应该使用更强壮的号码。
- 我想说,Infinity是一个数字,但不是一个数字。因此,如果你用这个来总结一个阵列中的所有数字,其中一个是Infinity,很可能应该是Infinity。但是,如果还有一个-Infinity,你应该明白,那就是我的产量。
- @Thor84no Parseint doesn't correctly with numbers in their exponential form.Consider following example:Parseint(10000000000000000000000000000000000000000000000,10)Will return 1,while parsefloat(10000000000000000000000000000)Will return 1E+21,because parsein try to parse"1E+21"
- 自从我的案例中,只有积分和浮点(非指数)有效,我将此添加到功能顶部:if (n.toUpperCase().includes('E')) return false;这一对意外指数的保护,E.G.24e4。技术上,这是数字,但在最前端的应用中,在一个数字场中的阿尔法字符应该触发一个验证错误。
- 别为我工作巴西格式错误。最好的解决方案
- Number()Instead of parseFloat()has insistance behavior across ecmascript specifications when Parsing exponential notification.相反地,它总是可以处理的。整条弦必须是数字,而不是弦乐的开始。
- 这个解决方案将回复到EDOCX1&3(Number with a String).
- 如果你想检查一条弦是真的,严格的,数字的,不要用这个。只是固定错误在我的应用程序中,因为一个Dev必须找到这个解决方案(Hello there),以便将文本输入为数字。但这是123abc的数字。
这应该帮助: </P >
1 2 3
| function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
} |
很好的链接:validate十进制数在JavaScript ISNUMERIC(的) </P >
1 2 3
| function IsNumeric(val) {
return Number(parseFloat(val)) === val;
} |
- 我认为这个最新版本实际上是最好的答案。我觉得奇怪的是,它的得票最少。起初我以为,如果用NaN调用IsNumeric,它可能会失败,但由于nan的怪癖,它不等于任何东西,它实际上是可以解决的。
- 我认为你也可以把演员表丢到Number()上,依靠双等号来做一点转换:let isNumeric = (val) => parseFloat(val) == val;。
- 根据我的要求,我相信许多其他开发人员会有它应该是函数isnumeric(val)返回号(val)==val;这样它就会忽略空字符串的情况。因为我只想验证输入的值是否无效。同时允许非数字的空字符串。我觉得这三个答案都很好
- 请解释一下密码。为什么不是Number(val).toString() == val.toString()?
- 如果val未定义,则.ToString将引发异常
- 我不确定我能得到这个答案。字符串"96"不是数字,因为数字("96")不严格等于"96"。它不应该是数字吗?
- 您可以根据我的要求进行尝试,我相信许多其他开发人员都会使用它,它应该是函数isNumeric(val)返回号(val)==val;,以便在出现空字符串时忽略它。因为我只想验证输入的值是否无效。同时允许非数字的空字符串。我觉得这三个答案都很好
有JavaScript函数isnan这将做那。 </P >
你可以通过检查值 </P >
- 除了"和真实与虚假",这是一个不
- 我得到了
- 也为了我
- 法国电力公司
1 2 3 4
| var str = 'test343',
isNumeric = /^[-+]?(\d+|\d+\.\d*|\d*\.\d+)$/;
isNumeric.test(str); |
- 好吧,取决于使用情况,它可能是这里最糟糕的答案。例如,本地化并不是一个帐户。
- 我更喜欢这个答案,如果您从字符串或用户输入中读取块,isnan和parseint会导致不需要的误报,如"123abc"、"2e1"、"0x2"等。(即使jquery.isnumeric也将解析为true)。我想用这种东西
- 嗯,根据用例的不同,它实际上可能是最好的答案。
- 只要你修剪字符串,不担心其他表示,这是一个合理的答案。
isfinite(字符串(n))时返回true(N = 0或"0","1"或1.1, </P >
但是,错误的方法""狗"或"1,2,3,4′,+∞和南的任何值。 </P >
- 伊斯菲涅特——>True,Isfinite([…])->True,Isfinite(……)True
- 以ES2015为例