2009-12-20 5 views
0

J'ai une expression régulière qui nous renvoie les codes postaux canada et canada comme suit.Expression régulière jquery pour une zone de texte

((?<US>\d{5})|(?<Can>\b[A-Z-[DFIOQUWZ]]\d[A-Z-[DFIOQU]]\ +\d[A-Z-[DFIOQU]]\d\b)) 

Je dois le faire dans un script java ou jquery. Une application qui ne peut extraire que ces valeurs. Par exemple, quelqu'un pourrait simplement coller un document dans la zone de texte, cliquer sur un bouton et extraire les codes postaux américains et canadiens valides dans un tableau pour un traitement ultérieur. J'ai regardé mais ne peux pas trouver quelque chose qui correspond à cette exigence.

J'ai essayé le filtre RegEx de Waldek Mastykarz sans aucune chance.

jQuery.extend(
    jQuery.expr[':'], { 
     regex: function(a, i, m, r) { 
      var r = new RegExp(m[3], 'i'); 
      return r.test(jQuery(a).text()); 
     } 
    } 
); 


$("#idTextArea:regex('\d{5}')") US only 

$("#idTextArea:regex('\\d{5}')") also tried this and host of others 

où l'entrée textarea pour idTextArea est la suivante.

"12345 ahdh 23, 6789, 65432" 

Je souhaite renvoyer uniquement 12345 et 65432 dans un tableau. Je suis totalement perplexe, toute aide est grandement appréciée.

+0

Ce que vous essayez de réaliser peut également être fait sans ce plugin jQuery. Utilisez l'événement 'onchange' pour que la zone de texte récupère son contenu et l'analyse avec une expression régulière. – kiamlaluno

Répondre

1

Vous avez seulement besoin d'utiliser la méthode String.match, je également simplifié l'expression régulière:

function validPostalCodes(input) { 
    var r = /(\d{5}|(\b[A-Z-DFIOQUWZ]\d[A-Z-DFIOQU]\ +\d[A-Z-DFIOQU]\d\b))/g; 
    return input.match(r); 
} 

Ensuite, vous pouvez utiliser la fonction ci-dessus avec votre valeur textarea:

var array = validPostalCodes($("#idTextArea").val()); 

Et vous obtiendrez un tableau contenant les valeurs correspondant à votre RegExp.

Questions connexes