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


137

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


4
您不需要jQuery。
森那维达斯

请编辑您的问题标题,使其更准确,例如“ jQuery输入仅验证字母字符”,因为您的描述对“如何在字符串中查找数字”没有答案,因此对我们的社区而言是不相关的搜索结果。谢谢!
Juanma格雷罗

从问题标题中编辑“ jQuery”,并替换为“ Javascript”。
VKen 2012年

@VKen,没有必要在标题上放置标签。
Starx 2012年

@Starx指出,我只是保持问题发帖人的格式。
VKen 2012年

Answers:


288

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

function hasNumber(myString) {
  return /\d/.test(myString);
}

1
正是我所需要的。谢谢
AndyH

此解决方案未考虑非整数数字(如3.2或1e4)
ekkis

8
是的 签入控制台:hasNumber(“ check 3.2 or 1e4”)= true vs hasNumber(“ check no number”)= false。因为3.2和1e4本身包含数字。
Zon

为什么这个答案不在最前面?
Rakesh Nair

它恰好回答了提出的问题。
Zon

108

您可以使用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');
}

2
matches != null表示不undefinednullwhile matches !== null表示不null通过,而是通过undefined
Nate 2014年

match()返回一个数组或null。因此if (matches !== null)应该没问题(它将请JSHint。)来源:developer.mozilla.org/en/docs/Web/JavaScript/Reference/…–
Jason

它应该isFinite(parseFloat(n))在第一个示例中。isNumeric("5,000")失败。
m.spyratos

@ m.spyratos,好吧,isFinite()如果传递的值是finite数字,并且number 5,000是带格式的数字字符串,而不是有限数字,则为true 。
Starx

@Starx,我同意。但是,如果您不支持使用格式字符串作为输入,那么为什么要使用parse float in isNaN?我建议从中删除解析浮点数isNaN或将其添加isFinite到要包含的内容中。
m.spyratos

22
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}

我必须阅读整个问题,才能真正回答所要提出的确切问题。问题标题有点欺骗性。
Nate 2014年

9

它绝不是防弹的,但它可以达到我的目的,也许会对某人有所帮助。

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
Elon Zito

5

在JavaScript中使用正则表达式。正则表达式是用于描述搜索模式的特殊文本字符串,它以/ pattern / modifiers的形式编写,其中“ pattern”是正则表达式本身,“ modifiers”是一系列表示各种选项的字符。 在文字匹配之后
         字符类是最基本的正则表达式概念。它使一个小的字符序列与更大的一组字符匹配。例如,[A-Z]可以代表大写字母,并且\d可以表示任何数字。

从下面的例子

  • contains_alphaNumeric«它检查字符串是否包含字母或数字(或同时包含字母和数字)。连字符( - )将被忽略
  • onlyMixOfAlphaNumeric«它检查字符串是否包含任何序列顺序的字母和数字

例:

function matchExpression( str ) {
    var rgularExp = {
        contains_alphaNumeric : /^(?!-)(?!.*-)[A-Za-z0-9-]+(?<!-)$/,
        containsNumber : /\d+/,
        containsAlphabet : /[a-zA-Z]/,

        onlyLetters : /^[A-Za-z]+$/,
        onlyNumbers : /^[0-9]+$/,
        onlyMixOfAlphaNumeric : /^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$/
    }

    var expMatch = {};
    expMatch.containsNumber = rgularExp.containsNumber.test(str);
    expMatch.containsAlphabet = rgularExp.containsAlphabet.test(str);
    expMatch.alphaNumeric = rgularExp.contains_alphaNumeric.test(str);

    expMatch.onlyNumbers = rgularExp.onlyNumbers.test(str);
    expMatch.onlyLetters = rgularExp.onlyLetters.test(str);
    expMatch.mixOfAlphaNumeric = rgularExp.onlyMixOfAlphaNumeric.test(str);

    return expMatch;
}

// HTML Element attribute's[id, name] with dynamic values.
var id1 = "Yash", id2="777", id3= "Yash777", id4= "Yash777Image4"
    id11= "image5.64", id22= "55-5.6", id33= "image_Yash", id44= "image-Yash"
    id12= "_-.";
console.log( "Only Letters:\n ", matchExpression(id1) );
console.log( "Only Numbers:\n ", matchExpression(id2) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id3) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id4) );

console.log( "Mixed with Special symbols" );
console.log( "Letters and Numbers :\n ", matchExpression(id11) );
console.log( "Numbers [-]:\n ", matchExpression(id22) );
console.log( "Letters :\n ", matchExpression(id33) );
console.log( "Letters [-]:\n ", matchExpression(id44) );

console.log( "Only Special symbols :\n ", matchExpression(id12) );

输出:

Only Letters:
  {containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: true, mixOfAlphaNumeric: false}
Only Numbers:
  {containsNumber: true, containsAlphabet: false, alphaNumeric: true, onlyNumbers: true, onlyLetters: false, mixOfAlphaNumeric: false}
Only Mix of Letters and Numbers:
  {containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Only Mix of Letters and Numbers:
  {containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Mixed with Special symbols
Letters and Numbers :
  {containsNumber: true, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Numbers [-]:
  {containsNumber: true, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters :
  {containsNumber: false, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters [-]:
  {containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Only Special symbols :
  {containsNumber: false, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}

java模式与正则表达式匹配


4

测试是否有任何字符是数字,且不需过度矫正,以根据需要进行调整。

const s = "EMA618"

function hasInt(me){
  let i = 1,a = me.split(""),b = "",c = "";
  a.forEach(function(e){
   if (!isNaN(e)){
     console.log(`CONTAIN NUMBER «${e AT POSITION ${a.indexOf(e)} => TOTAL COUNT ${i}`)
     c += e
     i++
   } else {b += e}
  })
  console.log(`STRING IS «${b}», NUMBER IS «${c}»`)
  if (i === 0){
    return false
    // return b
  } else {
    return true
    // return +c
  }
}


hasInt(s)


2

一种检查方法是遍历字符串,并在击中数字时返回true(或false,具体取决于所需内容)。

function checkStringForNumbers(input){
    let str = String(input);
    for( let i = 0; i < str.length; i++){
              console.log(str.charAt(i));
        if(!isNaN(str.charAt(i))){           //if the string is a number, do the following
            return true;
        }
    }
}

0

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

function isNumeric(n) {
  if(!isNaN(n))
    {
     return true
    }
  else
   {
    return false
   }
}

14
过度杀伤力。可能只是function isNumeric(n) { return !isNaN(n); }
Luca Steeb 2015年

这也不会检查是否有任何字符是数字。但是我可以想到一个受此启发的解决方案。
泰勒·拉曾比

0

当发现数字停止执行时,此代码还有助于“检测给定字符串中的数字

function hasDigitFind(_str_) {
  this._code_ = 10;  /*When empty string found*/
  var _strArray = [];

  if (_str_ !== '' || _str_ !== undefined || _str_ !== null) {
    _strArray = _str_.split('');
    for(var i = 0; i < _strArray.length; i++) {
      if(!isNaN(parseInt(_strArray[i]))) {
        this._code_ = -1;
        break;
      } else {
        this._code_ = 1;
      }
    }

  }
  return this._code_;
}

0

parseInt 当字符串以整数表示形式开头时,提供整数:

(parseInt '1a')  is  1

..所以也许:

isInteger = (s)->
  s is (parseInt s).toString()  and  s isnt 'NaN'

(isInteger 'a') is false
(isInteger '1a') is false
(isInteger 'NaN') is false
(isInteger '-42') is true

请原谅我的CoffeeScript。


-1

您也可以尝试lodash:

const isNumeric = number => 
  _.isFinite(_.parseInt(number)) && !_.isNaN(_.parseInt(number))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.