[英]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.