2011-07-12 4 views
4

Comment vérifier si une chaîne contient une valeur numérique par jquery?jQuery - Vérifie si la chaîne contient une valeur numérique

Je recherche parmi de nombreux exemples mais je n'ai que le moyen de vérifier un nombre, PAS un nombre dans une chaîne. Je suis en train de trouver quelque chose comme $(this).attr('id').contains("number");

(p/s: mon identifiant DOM sera quelque chose comme Large_a (sans valeur numérique), Large_a_1 (avec une valeur numérique), Large_a_2, etc.)

Quelle méthode J'utilise?

+0

L'un des premiers résultats de la recherche google: http://stackoverflow.com/questions/3955345/javascript-jquery-get- number-from-string –

Répondre

3

Ce code détecte les chiffres de suivi précédés du underscore symbole (azerty1_2 va accepter "2", mais azerty1 ne correspondraient pas):

if (matches = this.id.match(/_(\d)+$/)) 
{ 
    alert(matches[1]); 
} 
+0

Il n'y a pas besoin de grouper, * test * est probablement plus approprié (* match * renvoie un tableau de résultats, * test * juste tests). Donc 'if (/_\d+$/.test(this.id)) {...}'. Belle prise que l'OP peut seulement vouloir les nombres traînants. :-) – RobG

+0

Désolé, j'adore le code court ... et on ne sait jamais si la valeur du numéro sera nécessaire ou non :-) –

+0

Le faire par: if (ui.draggable.children(). Attr ('id ') .match (/ _ (\ d +) $ /)! = null) – shennyL

7

Vous pouvez utiliser une expression régulière:

var matches = this.id.match(/\d+/g); 
if (matches != null) { 
    // the id attribute contains a digit 
    var number = matches[0]; 
} 
2

Version simple:

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

version plus efficace (maintenir expression régulière dans une fermeture):

var hasNumber = (function() { 
    var re = /\d/; 
    return function(s) { 
     return re.test(s); 
    } 
}()); 
+0

Je suis curieux de savoir combien votre version est plus efficace? Je suppose que le coût de la fermeture en vaut la peine pour éviter de recréer l'expression régulière à chaque fois? – nnnnnn

Questions connexes