我不知道在JavaScript中识别包含其他字符串数字的字符串是多么困难。
Number('')
评估为0
,而''
绝对不是人类的数字。
parseFloat
强制执行数字,但允许它们被abitrary文本拖尾。
isNaN
的计算结果为false。
那么什么是编程函数来检查字符串是否是一个数字,根据一个简单而合理的定义是什么数字?
答案 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}$/;
我在回答(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'
似乎很好。第一个术语消除空字符串大小写,第二个术语强制执行字符串解释,该字符串解释由字符串的数字解释创建以匹配字符串。由于字符串不为空,因此删除任何容忍的字符(如空格),因此我们检查它们是否存在。