繁体   English   中英

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

[英]How to check if a string contains a number in JavaScript?

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

Number('')计算结果为0 ,而''绝对不是人类的数字。

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

对于空白字符串, isNaN计算结果为false。

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

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

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

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

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

演示

在此输入图像描述

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

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

有这个简单的解决方案:

var ok = parseFloat(s)==s;

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

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

你可以随时做:

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

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

我们试试吧

""+(+n)===n

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

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

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

如果name String仅包含数字或文本,则无需恐慌只使用此代码段。 试试下面。

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.}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM