我不明白在JavaScript中区分包含数字的字符串和其他字符串有多难。
Number('')
的计算结果是0
,而''
绝对不是人类的数字。
parseFloat
强制使用数字,但允许在数字后面加上任意文本。
对于空格字符串,isNaN
的计算结果为false。
那么,根据简单而合理的定义,检查字符串是否为数字的编程函数是什么?
发布于 2016-03-18 06:48:56
通过使用下面的函数,我们可以测试javascript字符串是否包含数字。在上面代替t的函数中,我们需要将javascript字符串作为参数传递,然后该函数将返回true或false
function hasNumbers(t)
{
var regex = /\d/g;
return regex.test(t);
}
发布于 2014-02-28 16:17:49
如果你想要一些关于格式的更复杂的东西,你可以使用regex,类似于:
var pattern = /^(0|[1-9][0-9]{0,2}(?:(,[0-9]{3})*|[0-9]*))(\.[0-9]+){0,1}$/;
我在回答一个不同的问题时创建了这个正则表达式,(see here)。这将检查它是否是一个至少包含一个字符的数字,除非它是0(或0.[othernumbers]
),否则不能以0开头。不能有小数,除非小数后面有数字,可以有逗号,也可以没有逗号。但是如果它这样做了,它会确保它们是3位数字,等等。如果你想允许负数,也可以在开头添加一个-?
……类似于:
/^(-)?(0|[1-9][0-9]{0,2}(?:(,[0-9]{3})*|[0-9]*))(\.[0-9]+){0,1}$/;
发布于 2014-02-28 16:15:12
有一个简单的解决方案:
var ok = parseFloat(s)==s;
如果你需要考虑"2 "
不是一个数字,那么你可以使用这个数字:
var ok = !!(+s==s && s.length && s.trim()==s);
https://stackoverflow.com/questions/22100243
复制