Come posso scrivere un'espressione regolare per far corrispondere le stringhe seguendo queste regole?
- 1 lettera seguita da 4 lettere o numeri, quindi
- 5 lettere o numeri, quindi
- 3 lettere o numeri seguiti da un numero e uno dei seguenti segni:! & @?
Devo consentire l'input come una stringa di 15 caratteri o come 3 gruppi di 5 caratteri separati da uno spazio.
Sto implementando questo in JavaScript.
risposte:
5 per risposta № 1Non scriverò per te tutta la regex poiché questo è compito a casa, ma ecco alcuni suggerimenti che dovrebbero aiutarti:
- Utilizza le classi di caratteri.
[A-Z]
corrisponde a tutte le lettere maiuscole.[a-z]
corrisponde a tutte le lettere minuscole.[0-9]
corrisponde ai numeri Puoi combinarli in questo modo[A-Za-z0-9]
. - Utilizzare quantificatori come
{n}
così[A-Z]{3}
ti dà 3 lettere maiuscole. - Puoi mettere altri personaggi nelle classi di personaggi. Diciamo che vuoi abbinare% o @ o #, che potresti fare
[%@#]
che corrisponderebbe a qualsiasi di quei personaggi. - Alcuni meta-caratteri (caratteri che hanno un significato speciale nel contesto di espressioni regolari) dovranno essere sfuggiti in questo modo:
$
(da$
corrisponde alla fine di una riga) ^
e$
corrisponde rispettivamente all'inizio e alla fine della riga.s
corrisponde allo spazio bianco, ma se si sanitizza il proprio input, non è necessario utilizzarlo.- Le bandiere dopo la regex fanno cose speciali. Ad esempio in
/[a-z]/i
, ili
ignora il caso.
1 per risposta № 2
Questo dovrebbe essere:
/^[a-z][a-z0-9]{4} ?[a-z0-9]{5} ?[a-z0-9]{3}[0-9][!&@?]$/i
Sentiti libero di cambiare 0-9 e [0-9] con d
se lo ritieni opportuno
La regex è semplice e abbastanza leggibile. ^
e $
assicurati che questa sia una corrispondenza intera, quindi non ci sono caratteri extra prima o dopo il codice, e il /i
la bandiera consente lettere maiuscole o minuscole.
1 per risposta № 3
Vorrei iniziare con a lezione.
Presta attenzione ai quantificatori (come {N}
) e classi di caratteri (come [a-zA-Z]
)
0 per risposta № 4
^[a-zA-Z][a-zA-Z0-9]{4} ?[a-zA-Z0-9]{5} ?[a-zA-Z0-9]{3}[!&@?]$