Limitarea intrărilor la caractere alfanumerice în orice limbă
Această expresie regulată limitează intrările la litere și numere din orice limbă sau script:
^+$
Opțiuni Regex: None
Arome Regex: .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9
Aceasta folosește o clasă de caractere care include prescurtări pentru toate punctele de cod din categoriile Unicode Letter, Mark și Decimal Number, care urmează definiția oficială Unicode a unui caracter alfanumeric. Categoria Mark este inclusă deoarece semnele sunt necesare pentru cuvintele din multe limbi. Mărcile sunt puncte de cod care sunt destinate să fie combinate cu alte caractere (de exemplu, pentru a forma o versiune accentuată a unei litere de bază).
Din păcate, categoriile Unicode nu sunt suportate de toate variantele de expresii regulate acoperite de această carte. În mod specific, acest regex nu va funcționa cu JavaScript (cu excepția cazului în care se folosește XRegExp), Python sau cu aroma nativă a lui Ruby 1.8. Utilizarea acestui regex cu PCRE necesită ca PCRE să fie compilat cu suport UTF-8, iar categoriile Unicode pot fi utilizate cu funcțiile preg
din PHP (care se bazează pe PCRE) dacă opțiunea /u
este adăugată la regex.
Următorul regex prezintă o soluție pentru Python:
^+$
Opțiuni regex: Unicode
Regex flavors: Python
În acest caz, evităm lipsa categoriilor Unicode în Python prin utilizarea steagului UNICODE
sau U
la crearea expresiei regulate. Acest lucru schimbă semnificația unor simboluri regex, făcându-le să utilizeze tabelul de caractere Unicode. ‘\w
‘ ne ajută să găsim cea mai mare parte a soluției, deoarece se potrivește cu caracterele alfanumerice și cu sublinierea. Utilizând inversul său „\W
” într-o clasă de caractere negate, putem elimina underscore-ul din acest set. Negațiile duble ca aceasta sunt ocazional foarte utile în expresiile regulate, deși pot fi dificil de înțeles. Python 3.x include în mod implicit caractere non-ASCII în stenograme precum ‘\w
‘ și, prin urmare, nu necesită indicatorul UNICODE
.