web-dev-qa-db-fra.com

Vérifier si une chaîne d'entrée contient un nombre en javascript

Mon objectif final est de valider un champ de saisie. L'entrée peut être alphabétique ou numérique.

95
Udara S.S Liyanage

Si je ne me trompe pas, la question demande "contient un numéro" et non "est un nombre". Alors:

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

Vous pouvez le faire en utilisant javascript. Pas besoin de Jquery ou de Regex

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

Tout en mettant en œuvre

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

Mise à jour: pour vérifier si une chaîne contient des nombres, vous pouvez utiliser des expressions régulières pour le faire.

var matches = val.match(/\d+/g);
if (matches != null) {
    alert('number');
}
94
Starx
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}
18
Jishnu A P

Ce n'est pas du tout pare-balles, mais cela a fonctionné pour moi et cela aidera peut-être quelqu'un.

var value = $('input').val();
 if(parseInt(value)) {
  console.log(value+" is a number.");
 }
 else {
  console.log(value+" is NaN.");
 }
5
Elon Zito

Une façon de vérifier cela consiste à parcourir la chaîne et à renvoyer true (ou false selon ce que vous voulez) lorsque vous frappez un nombre.

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;
        }
    }
}
1
Herbert Su

Vous pouvez le faire en utilisant javascript. Pas besoin de Jquery ou de Regex

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

Utilisation de Expressions régulières avec JavaScript . Une expression régulière est une chaîne de texte spéciale décrivant un motif de recherche. Elle est écrite sous la forme de/pattern/modifiers, où "pattern" est l'expression régulière elle-même et "modifiers" une série de caractères indiquant diverses options .
Le classe de caractères est le concept de regex le plus élémentaire après une correspondance littérale. Cela fait qu'une petite séquence de caractères correspond à un plus grand ensemble de caractères. Par exemple, [A-Z] pourrait correspondre à l'alphabet majuscule et \d à n'importe quel chiffre.

Exemple ci-dessous

Exemple:

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) );

Out mis: 

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 Pattern Matching avec des expressions régulières.

1
Yash

Tester si un caractère est un nombre, sans dépassement, à adapter selon les besoins.

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)
0
NVRM

Vous pouvez également essayer lodash:

const isNumeric = number => 
  _.isFinite(_.parseInt(number)) && !_.isNaN(_.parseInt(number))
0
Darex1991

Ce code aide également dans, "Pour détecter les numéros dans une chaîne donnée" lorsque les numéros trouvés, il arrête son exécution.

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
Khan Usama