PHP espressione regolare [accettare i caratteri selezionati solo]
-
21-09-2019 - |
Domanda
Voglio accettare un elenco di carattere come input da parte dell'utente e respingo il resto. Posso accettare una stringa formattata o trovare se un personaggio / string manca. Ma come posso accettare solo un insieme di caratteri, mentre respingere tutti gli altri personaggi. Vorrei usare preg_match per fare questo.
es. caratteri consentiti sono: a..z, A..Z, -,’‘ Utente deve poter entrare coloro carattere in qualsiasi ordine. Ma non devono consentito l'uso diverso da quei caratteri.
Soluzione
Con una classe di caratteri negata: [^ A-Za-z \ w]
Questa corrisponderà solo se l'utente immette qualcosa di diverso da ciò che è in quella classe di caratteri.
if (preg_match('/[^A-Za-z-\w]/', $input)) { /* invalid charcter entered */ }
Altri suggerimenti
[a-zA-Z \ w]
[] parentesi quadre sono utilizzate per i caratteri di gruppo e si comportano come un singolo carattere. in modo da poter anche fare cose come [...] + e così via anche a-z, A-Z, 0-9 definire gli intervalli in modo da non dover scrivere l'intero alfabeto
È possibile utilizzare la seguente espressione regolare: ^[a-zA-Z -]+$
.
Il ^
corrisponde all'inizio della stringa, che le impedisce di corrispondenza al centro del 123abc
stringa. Il $
corrisponde allo stesso modo la fine della stringa, impedendole di corrispondenza al centro del abc123
.
Le staffe corrispondono ogni personaggio dentro di loro; a-z
significa che ogni carattere tra a
e z
. Per abbinare il carattere -
stesso, metterlo alla fine. ([19-]
corrisponde a un 1
, un 9
, o un -
; [1-9]
corrisponde ogni carattere tra 1
e 9
, e non corrisponde -
)
.
Il +
dice di abbinare una o più della cosa prima di esso. È possibile sostituire il +
con un *
, il che significa 0 o più, se anche voi volete abbinare una stringa vuota.
Per ulteriori informazioni, vedere qui .
Si sarebbe guardando una classe di personaggio ^
[]
negata che stabilisce i vostri caratteri consentiti, quindi prova per le partite.
$pattern = '/[^A-Za-z\- ]/';
if (preg_match($pattern, $string_of_input)){
//return a fail
}
//Matt beat me too it...