A bevitel korlátozása alfanumerikus karakterekre bármely nyelven
Ez a reguláris kifejezés a bevitelt bármely nyelv vagy script betűire és számaira korlátozza:
Regex ízek: .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9
Ez egy olyan karakterosztályt használ, amely a Unicode Letter, Mark és Decimal Number kategóriák összes kódpontjának rövidítéseit tartalmazza, ami követi az alfanumerikus karakter hivatalos Unicode definícióját. A Mark kategória azért szerepel, mert számos nyelvben a szavakhoz szükségesek a jelek. A jelek olyan kódpontok, amelyek más karakterekkel kombinálhatók (például egy alapbetű ékezetes változatát alkotják).
Az Unicode-kategóriákat sajnos nem támogatja az ebben a könyvben tárgyalt összes reguláris kifejezés ízesítés. Konkrétan, ez a regex nem fog működni a JavaScript (kivéve, ha az XRegExp-t használja), a Python vagy a Ruby 1.8 natív ízével. Ennek a regexnek a PCRE-vel való használata megköveteli, hogy a PCRE UTF-8 támogatással legyen lefordítva, és az Unicode kategóriák használhatók a PHP preg
függvényeivel (amelyek a PCRE-re támaszkodnak), ha a /u
opciót a regexhez csatoljuk.
A következő regex egy Pythonra vonatkozó megoldást mutat:
^+$
Regex opciók: Unicode
Regex flavors: Itt a szabályos kifejezés létrehozásakor a UNICODE
vagy U
flag használatával megkerüljük a Pythonban a Unicode kategóriák hiányát. Ez megváltoztatja néhány regex token jelentését azáltal, hogy a Unicode karaktertáblázatot használja. A ‘\w
‘ ezután a legtöbbet hozza a megoldáshoz, mivel megfelel az alfanumerikus karaktereknek és az aláhúzásnak. Az inverz ‘\W
‘ használatával egy negált karakterosztályban eltávolíthatjuk az aláhúzást ebből a halmazból. Az ehhez hasonló kettős negatíva esetenként igen hasznos a reguláris kifejezésekben, bár néha nehéz lehet a fejünkbe verni. A Python 3.x alapértelmezés szerint tartalmazza a nem-ASCII karaktereket az olyan rövidítésekben, mint a ‘\w
‘, és ezért nincs szükség a UNICODE
jelzőre.