/ / Regex per abbinare l'input del codice della carta - javascript, regex

Regex per abbinare l'input del codice della carta - javascript, regex

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 № 1

Non 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, il i 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}[!&@?]$