检查输入字符串是否包含javascript中的数字

IT技术 javascript string numbers validation
2021-02-10 08:28:23

我的最终目标是验证输入字段。输入可以是字母或数字。

6个回答

如果我没记错的话,这个问题需要“包含数字”,而不是“是数字”。所以:

function hasNumber(myString) {
  return /\d/.test(myString);
}
它完全回答了提出的问题。
2021-03-16 08:28:23
正是我所需要的。谢谢
2021-03-24 08:28:23
此解决方案不考虑非整数,如 3.2 或 1e4
2021-03-29 08:28:23
为什么这个答案不在顶部?
2021-04-05 08:28:23
确实如此。检查控制台:hasNumber("check 3.2 or 1e4") = true vs hasNumber("check no numbers") = false。因为 3.2 和 1e4 本身就包含数字。
2021-04-11 08:28:23

您可以使用 javascript 执行此操作。不需要 Jquery 或 Regex

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

在实施的同时

var val = $('yourinputelement').val();
if(isNumeric(val)) { alert('number'); } 
else { alert('not number'); }

更新:要检查字符串中是否包含数字,您可以使用正则表达式来执行此操作

var matches = val.match(/\d+/g);
if (matches != null) {
    alert('number');
}
match()返回一个数组或null所以if (matches !== null)应该没问题(它会让 JSHint 满意。)来源:developer.mozilla.org/en/docs/Web/JavaScript/Reference/...
2021-03-12 08:28:23
@Starx,我同意。但是,如果您不支持格式化字符串作为输入,那么为什么要使用 parse float inisNaN呢?我建议要么从中删除解析浮点数,isNaN要么将其添加isFinite到组成中。
2021-03-12 08:28:23
matches != null表示 notundefinednullwhilematches !== null表示具体 not nullbut pass undefined
2021-03-13 08:28:23
它应该isFinite(parseFloat(n))在第一个示例中。isNumeric("5,000")失败。
2021-03-19 08:28:23
@m.spyratos,好吧,isFinite()如果传递的值是finite数字并且数字5,000是格式化的数字字符串而不是有限数字,则给出 true
2021-03-21 08:28:23
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}
我必须阅读整个问题才能意识到这实际上回答了所问的确切问题。问题标题有点欺骗性。
2021-04-10 08:28:23

这就是你所需要的。

      var hasNumber = /\d/;   
      hasNumber.test("ABC33SDF");  //true
      hasNumber.test("ABCSDF");  //false 

它无论如何都不是防弹的,但它对我的目的有用,也许它会帮助某人。

var value = $('input').val();
 if(parseInt(value)) {
  console.log(value+" is a number.");
 }
 else {
  console.log(value+" is NaN.");
 }
Boolean(parseInt(3)) -> true; Boolean(parseInt("3")) -> true; Boolean(parseInt("three")) -> false
2021-03-31 08:28:23