11
votes

Expression régulière JavaScript - Deux [A-Z] suivi de trois [0-9] seulement

J'ai une expression régulière simple:

[az] {2} [0-9] {3}) $ / g code> à l'intérieur des éléments suivants: p>

regForm.submit(function(){
  if ($.trim($('#new-usr').val()).match(/([A-z]{2}[0-9]{3})$/g)) {
    alert('No');
    return false;
  }
});


0 commentaires

3 Réponses :


7
votes

La classe de caractères [A-Z] n'est probablement pas ce dont vous avez besoin.

pourquoi?

La classe de caractères [AZ] correspond à des caractères non alphabétiques tels que [, ] parmi autres.

JS Fiddle link pour prouver cela.

Ce didacticiel W3school le recommande de manière incorrecte.

Si vous n'avez besoin que de lettres minuscules utilisez [AZ]
Si vous n'avez besoin que des lettres majuscules utilisez [a-z]
Si vous avez besoin à la fois d'utiliser: [a-za-z]

Si vous souhaitez faire correspondre une chaîne si elle a 2 lettres suivies de 3 chiffres n'importe où Dans la chaîne, retirez simplement l'ancrage d'extrémité $ à partir de votre motif: xxx

si vous voulez correspondre à une chaîne si elle a 2 lettres suivies par 3 chiffres et rien d'autre utilise à la fois l'ancre de démarrage ^ et l'ancrage de fin $ comme xxx / p>


0 commentaires

16
votes

Essayez / ^ [a-z] {2} [0-9] {3} $ / g à la place.

Vous devez spécifier que toute la chaîne doit être appariée. Sinon, vous obtenez la partie en surbrillance correspondante: A BC123 .

(j'ai omis le () 's, car vous n'avez pas vraiment besoin du groupe.)

BTW, êtes-vous sûr que vous voulez [a-z] et pas seulement [a-za-z] ?


0 commentaires

1
votes

Vous pouvez également utiliser: xxx

si votre chaîne contient plusieurs mots et que vous essayez de faire correspondre un mot.


0 commentaires