voglio fare all'utente di inserire i numeri in 0-20 ed entrambi possono entrare 01 e 1espressione regolare per consentire solo numeri nel campo di 1-20
questo è quello che ho finora
/^[1-9]|0[1-9]|1[0-9]|2[0]$/
ma non funziona.
voglio fare all'utente di inserire i numeri in 0-20 ed entrambi possono entrare 01 e 1espressione regolare per consentire solo numeri nel campo di 1-20
questo è quello che ho finora
/^[1-9]|0[1-9]|1[0-9]|2[0]$/
ma non funziona.
Il problema è che |
ha precedenza inferiore ^
e $
, in modo che il modello significa ^[1-9]
o0[1-9]
o1[0-9]
o2[0]$
: solo valori sola cifra sono limitate da ^
, e solo 20
è limitata per $
.
È possibile ripetere ^
e $
in ogni ramo della alternanza, oppure avvolgere l'alternanza in (?:...)
per creare un non-cattura subexpression:
/^[1-9]$|^0[1-9]$|^1[0-9]$|^20$/
/^(?:[1-9]|0[1-9]|1[0-9]|20)$/
(ho anche preso la libertà di cambiare [0]
a 0
.)
provare questo
/^([01]?\d|20)$/
0 o 1 (opzionale) seguito da almeno una cifra OR 20
Questo consentirà 00. Dovrebbe essere vietato? –
Se 00 non è consentito/^ (0 [1-9] | 1 \ d | 20) $/ –
grazie funziona ora. –
stai
/^([0-1]?[0-9]|20)$/
Il problema è che il 20 è un caso speciale. La seconda sezione lo copre. La prima sezione copre il resto. Sto assumendo espressioni regolari in stile perl, dal momento che non hai specificato il contesto.
Potresti dirmi cosa c'è di sbagliato nel mio codice? Ho appena imparato la regex da solo stamattina. –
Come ruakh ha specificato nella sua risposta, è una cosa prioritaria - dovrai mettere tra parentesi il blocco per assicurarti che i segni "^" e "$" abbiano una priorità inferiore rispetto al resto dell'espressione. –
Oggi mi ha aiutato ... Grazie :) – AbdulAziz
@AbdulAziz: Prego! :-) – ruakh