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.

È stato utile?

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...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top