Limitare l’input ai caratteri alfanumerici in qualsiasi lingua
Questa espressione regolare limita l’input a lettere e numeri di qualsiasi lingua o script:
^+$
Opzioni Regex: Nessuna
Sapori Regex: .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9
Questa usa una classe di caratteri che include stenografie per tutti i punti di codice nelle categorie Unicode Letter, Mark, e Decimal Number, che segue la definizione ufficiale Unicode di un carattere alfanumerico. La categoria Mark è inclusa poiché i marchi sono richiesti per le parole di molte lingue. I marchi sono punti di codice che sono destinati ad essere combinati con altri caratteri (per esempio, per formare una versione accentata di una lettera base).
Purtroppo, le categorie Unicode non sono supportate da tutte le espressioni regolari coperte da questo libro. In particolare, questa regex non funzionerà con JavaScript (a meno che non si usi XRegExp), Python, o con la versione nativa di Ruby 1.8. L’uso di questa regex con PCRE richiede che PCRE sia compilato con il supporto UTF-8, e le categorie Unicode possono essere usate con le funzioni preg
di PHP (che si basano su PCRE) se l’opzione /u
viene aggiunta alla regex.
La seguente regex mostra un workaround per Python:
^+$
Opzioni regex: Unicode
Sapori Regex: Python
Qui si aggira la mancanza di categorie Unicode in Python usando il flag UNICODE
o U
quando si crea l’espressione regolare. Questo cambia il significato di alcuni token regex facendoli usare la tabella dei caratteri Unicode. ‘\w
‘ ci porta quindi alla maggior parte della strada verso una soluzione, poiché corrisponde ai caratteri alfanumerici e all’underscore. Usando il suo inverso ‘\W
‘ in una classe di caratteri negati, possiamo rimuovere il trattino basso da questo insieme. Doppie negazioni come questa sono occasionalmente abbastanza utili nelle espressioni regolari, sebbene possano essere difficili da capire. Python 3.x include caratteri non-ASCII in stenografie come ‘\w
‘ per impostazione predefinita, e quindi non richiede il flag UNICODE
.