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

Begränsa inmatningen till alfanumeriska tecken på vilket språk som helst

Detta reguljära uttryck begränsar inmatningen till bokstäver och siffror på vilket språk eller skript som helst:

^+$

Regex-alternativ: Detta använder en teckenklass som innehåller förkortningar för alla kodpunkter i kategorierna Unicode Letter, Mark och Decimal Number, vilket följer den officiella Unicode-definitionen av ett alfanumeriskt tecken. Kategorin Mark är inkluderad eftersom marker krävs för ord på många språk. Marker är kodpunkter som är avsedda att kombineras med andra tecken (t.ex. för att bilda en accentuerad version av en grundbokstav).

Tyvärr stöds inte Unicode-kategorierna av alla de reguljära uttrycksvarianter som behandlas i den här boken. Det här regexet fungerar inte med JavaScript (om du inte använder XRegExp), Python eller Ruby 1.8:s ursprungliga variant. För att använda det här regexet med PCRE krävs att PCRE kompileras med UTF-8-stöd, och Unicode-kategorier kan användas med PHP:s preg-funktioner (som förlitar sig på PCRE) om /u-alternativet läggs till regexet.

Följande regex visar en lösning för Python:

^+$

Regex-alternativ: Unicode

Regex-funktioner: Python

Här kringgår vi bristen på Unicode-kategorier i Python genom att använda flaggan UNICODE eller U när vi skapar det reguljära uttrycket. Detta ändrar betydelsen av vissa regex-token genom att de använder Unicode-teckentabellen. ’\w’ ger oss då det mesta av vägen till en lösning eftersom den matchar alfanumeriska tecken och understrykningen. Genom att använda dess motsats ”\W” i en negerad teckenklass kan vi ta bort understrykningen från denna uppsättning. Dubbla negationer som denna är ibland ganska användbara i reguljära uttryck, även om de kan vara svåra att förstå. Python 3.x inkluderar icke-ASCII-tecken i förkortningar som ”\w” som standard, och kräver därför inte UNICODE-flaggan.

Lämna ett svar

Din e-postadress kommer inte publiceras.