如何检查字符串是否包含JavaScript中的数字?

时间:2014-02-28 16:13:54

标签: javascript types

我不知道在JavaScript中识别包含其他字符串数字的字符串是多么困难。

Number('')评估为0,而''绝对不是人类的数字。

parseFloat强制执行数字,但允许它们被abitrary文本拖尾。

对于空格字符串,

isNaN的计算结果为false。

那么什么是编程函数来检查字符串是否是一个数字,根据一个简单而合理的定义是什么数字?

8 个答案:

答案 0 :(得分:6)

通过使用以下函数,我们可以测试javascript字符串是否包含数字。在t的上面函数中,我们需要传递我们的javascript字符串作为参数,然后函数将返回true或false

function hasNumbers(t)
{
var regex = /\d/g;
return regex.test(t);
}    

答案 1 :(得分:2)

如果你想要一些关于格式更复杂的东西,你可以使用正则表达式,如下所示:

var pattern = /^(0|[1-9][0-9]{0,2}(?:(,[0-9]{3})*|[0-9]*))(\.[0-9]+){0,1}$/;

Demo

enter image description here

我在回答(see here)一段时间后回答了一个不同的问题时创建了这个正则表达式。这将检查它是否为至少包含一个字符的数字,除非为0(或0.[othernumbers]),否则不能以0开头。除非小数点后有数字,否则不能有小数,可能有也可能没有逗号..但如果确实如此,则确保它们相隔3位数等。如果你想要,也可以在开头添加-?允许负数...类似于:

/^(-)?(0|[1-9][0-9]{0,2}(?:(,[0-9]{3})*|[0-9]*))(\.[0-9]+){0,1}$/;

答案 2 :(得分:1)

这是一个简单的解决方案:

var ok = parseFloat(s)==s;

如果您需要将"2 "视为非数字,那么您可以使用以下数字:

var ok = !!(+s==s && s.length && s.trim()==s);

答案 3 :(得分:0)

你总是可以这样做:

function isNumber(n)
{
    if (n.trim().length === 0)
        return false;
    return !isNaN(n);
}

答案 4 :(得分:0)

这可能是疯狂的,具体取决于字符串的长度,但您可以将其拆分为单个字符数组,然后使用isNaN测试每个字符以确定它是否为数字。

答案 5 :(得分:0)

我们试试

""+(+n)===n

强制执行一种非常严格的规范数字方式。

但是,JS可靠的var n=''+some_number可以创建这样的数字字符串。

因此,此解决方案将拒绝'.01',并拒绝JS将使用指数进行字符串化的所有简单数字,也拒绝JS仅使用尾数显示的所有指数表示。但是只要我们保持整数和低浮点数范围,它应该与其他提供的数字一起使用。

答案 6 :(得分:0)

如果名称字符串仅包含数字或文字,则无需恐慌只使用此代码段。 试试以下。

var pattern = /^([^0-9]*)$/;
if(!YourNiceVariable.value.match(pattern))   {//it happen while Name Contains only Charectors.}

if(YourNiceVariable.value.match(pattern))   {//it happen while Name Contains only Numbers.}

答案 7 :(得分:-1)

一个非常简短,错误但可纠正的答案刚刚被删除。我只是评论它,除了它非常酷!所以这里再次纠正了这个词:

n!=='' && +n==n'

似乎很好。第一个术语消除空字符串大小写,第二个术语强制执行字符串解释,该字符串解释由字符串的数字解释创建以匹配字符串。由于字符串不为空,因此删除任何容忍的字符(如空格),因此我们检查它们是否存在。