在JavaScript中验证十进制数的最干净,最有效的方法是什么?
奖励积分:
测试用例:
01. IsNumeric('-1') => true
02. IsNumeric('-1.5') => true
03. IsNumeric('0') => true
04. IsNumeric('0.42') => true
05. IsNumeric('.42') => true
06. IsNumeric('99,999') => false
07. IsNumeric('0x89f') => false
08. IsNumeric('#abcdef') => false
09. IsNumeric('1.2.3') => false
10. IsNumeric('') => false
11. IsNumeric('blah') => false
Run Code Online (Sandbox Code Playgroud) 有没有一种快速的方法来设置HTML文本输入(<input type=text />
)只允许数字键击(加'.')?
在Typescript中,这显示一个错误,即isNaN仅接受数值
isNaN('9BX46B6A')
Run Code Online (Sandbox Code Playgroud)
并返回false,因为parseFloat('9BX46B6A')
求值为9
isNaN(parseFloat('9BX46B6A'))
Run Code Online (Sandbox Code Playgroud)
我仍然可以运行Visual Studio中出现的错误,但我想以正确的方式执行.
目前,我已经写了这个修改过的功能 -
static isNaNModified = (inputStr: string) => {
var numericRepr = parseFloat(inputStr);
return isNaN(numericRepr) || numericRepr.toString().length != inputStr.length;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试isNaN
在Node.js模块中使用箭头函数内的全局函数,但我收到此错误:
[eslint] Unexpected use of 'isNaN'. (no-restricted-globals)
这是我的代码:
const isNumber = value => !isNaN(parseFloat(value));
module.exports = {
isNumber,
};
Run Code Online (Sandbox Code Playgroud)
我知道自己做错了什么吗?
PS:我正在使用AirBnB风格指南.
我需要检查一下justPrices[i].substr(commapos+2,1)
.
字符串类似于:"blabla,120"
在这种情况下,它将检查'0'是否是数字.如何才能做到这一点?
看到这个问题:JavaScript中是否有(内置)方法来检查字符串是否为有效数字?并且:jsperf,提出的方法之一就是这样(比照):
var a = "123"
var b = "123b"
if ( +a === +a ) // true
if ( +b === +b ) // false
Run Code Online (Sandbox Code Playgroud)
这个逻辑如何在JavaScript 内部工作以实现这一目标?
我的问题不是如何检查字符串是否是有效数字 - 这已在这里得到解答:验证JavaScript中的十进制数 - IsNumeric().我想了解该声明的+a === +a
工作原理.
我使用WebStorm 2016.2.2,TypeScript 2.1,Node.js.
出于某种原因,isNan
声明为只接受数字的函数:
declare function isNaN(number: number): boolean;
Run Code Online (Sandbox Code Playgroud)
我试图将其改为任何,但看起来它不会对TSC产生影响.我仍然得到同样的错误:
'string'类型的参数不能分配给'number'类型的参数
我的代码(简化):
isNan("10");
Run Code Online (Sandbox Code Playgroud)
我该如何解决/解决它?
编辑:
请注意,根据规范,isNan的参数可以是任何类型:Number.isNan()
另外:我的代码被简化了.我实际上收到一个参数,可能是一个字符串或一个数字,如果它是一个字符串,它可能是一个我希望转换为数字("10")的字符串数字或一个简单的字符串("Hello world") .
我不想通过包含我的整个代码来解决这个问题,但是因为它引起了混乱,这是我真正的代码:
if (typeof expectedValue === "string" && !isNaN(expectedValue)) {
expectedValue = +expectedValue;
}
if (typeof actualValue === "string" && !isNaN(ctualValue)) {
actualValue = +actualValue;
}
switch (this.operator) {
case Operator.equal:
return actualValue == expectedValue;
case Operator.notEqual:
return actualValue === undefined || actualValue != expectedValue;
case Operator.greaterThan:
return actualValue > expectedValue;
case Operator.littleThan:
return actualValue < expectedValue;
case Operator.greaterOrEqual: …
Run Code Online (Sandbox Code Playgroud) 我尝试了以下检查数据类型(特别是整数),但没有工作.
var i = "5";
if(Number(i) = 'NaN')
{
console.log('This is not number'));
}
Run Code Online (Sandbox Code Playgroud) 这个问题的答案可能非常明显,但我无法通过粗略搜索在Mozilla文档或谷歌上找到它.
如果你有这样的代码
Number.MAX_VALUE + 1; // Infinity, right?
Number.MIN_VALUE - 1; // -Infinity, right?
Run Code Online (Sandbox Code Playgroud)
然后我希望将任何东西添加到Number.MAX_VALUE会将其推送到Infinity
.结果只是Number.MAX_VALUE
吐了回来.
但是,当在Chrome JS控制台中玩游戏时,我注意到它实际上并没有实际发生,Infinity
直到我添加/减去足够的内容:
Number.MAX_VALUE + Math.pow(100,1000); // now we hit Infinity
Number.MIN_VALUE - Math.pow(100,1000); // -Infinity at last
Run Code Online (Sandbox Code Playgroud)
什么是这个"缓冲"的解释Number.MAX_VALUE
和Infinity
?
我需要运行一个包含逻辑的脚本:If isNumber,Then DoSomething.
我运行其他如果然后测试,如果为空,如果单元格包含"x".它应该很简单,但我找不到解决方案.我试过getNumberFormat,innum,isnumber等.
function ifIsNumber() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var substring1 = s.getRange("A1").getNumberFormat();
s.getRange("B1").setValue(substring1);
}
Run Code Online (Sandbox Code Playgroud)
对于包含数字和文本的两个单元格,此代码检查单元格A1并在单元格B1中返回字符串"0.###############".如何识别哪些单元格是数字?
javascript ×8
node.js ×2
numbers ×2
typescript ×2
validation ×2
eslint ×1
google-apps ×1
html ×1
infinity ×1
jquery ×1
math ×1
string ×1
webstorm ×1