Regular Expressions Cookbook, 2nd Edition by Jan Goyvaerts, Steven Levithan

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.

Lasă un răspuns

Adresa ta de email nu va fi publicată.