2010-12-02 7 views
7

Ho una semplice espressione regolare:JavaScript espressione regolare - due [az] seguito da tre [0-9] solo

[A-z]{2}[0-9]{3})$/g all'interno il seguente:

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

Questa è correttamente letto che qualcosa come 'ab123' dà un avviso e 'ab1234' no. Tuttavia, 'abc123' sta ancora lanciando l'avviso. Ne ho bisogno quindi è solo lanciando l'avviso quando sono solo 2 lettere seguite da tre numeri.

risposta

11

Prova /^[A-z]{2}[0-9]{3}$/g invece.

È necessario specificare che l'intera stringa deve essere abbinata. Altrimenti si ottiene la parte evidenziata corrispondente: a bc123.

(ho omesso le () 's, perché non si ha realmente bisogno il gruppo.)

BTW, sei sicuro di voler [A-z] e non solo [A-Za-z]?

7

La classe di carattere [A-z] non è probabilmente quello che ti serve.

Perché?

La classe di carattere [A-z] corrisponde ad alcuni caratteri non alfabetici come [, ] tra gli altri.

JS fiddle link per dimostrarlo.

This W3school tutorial consiglia in modo errato.

Se avete bisogno solo lettere minuscole usano [a-z]
Se avete bisogno solo lettere maiuscole utilizzano [A-Z]
Se è necessario sia per uso: [a-zA-Z]

Se si desidera far corrispondere una stringa se ha 2 lettere seguite da 3 cifre ovunque nella stringa, è sufficiente rimuovere l'ancora fine $ dal vostro modello:

[a-z]{2}[0-9]{3} 

Se si vuole abbinare una stringa se ha 2 lettere seguite da 3 cifre e nient'altro utilizzo sia avvia ancoraggio ^ e ancoraggio terminale $ come

^[a-z]{2}[0-9]{3}$ 
+0

Ciao, Era una stringa esattamente due a-z seguita da tre 0-9. Saluti. –

+0

La classe di caratteri Sto usando il '\t Trova qualsiasi carattere dalla A maiuscola alla minuscola z' come trovata su http://www.w3schools.com/jsref/jsref_obj_regexp.asp. Non è raccomandato? –

+0

@Scott: non è raccomandato.Si prega di consultare la mia risposta aggiornata. – codaddict

1

In alternativa è possibile utilizzare:

/\b([A-z]{2}[0-9]{3})\b/g 

se la stringa contiene più parole e si sta cercando di abbinare una parola.

Problemi correlati