Ogranicz dane wejściowe do znaków alfanumerycznych w dowolnym języku
To wyrażenie regularne ogranicza dane wejściowe do liter i cyfr z dowolnego języka lub skryptu:
^+$
Opcje Regex: Brak
Smaki Regex: .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9
Używa klasy znaków, która zawiera skróty dla wszystkich punktów kodowych w kategoriach Unicode Letter, Mark i Decimal Number, co jest zgodne z oficjalną definicją Unicode znaku alfanumerycznego. Kategoria Znak jest uwzględniona, ponieważ znaki są wymagane dla słów w wielu językach. Znaki są punktami kodowymi, które mają być łączone z innymi znakami (na przykład, aby utworzyć akcentowaną wersję litery podstawowej).
Niestety, kategorie Unicode nie są obsługiwane przez wszystkie smaki wyrażeń regularnych omówione w tej książce. Konkretnie, ten regex nie będzie działał z JavaScriptem (chyba że użyjemy XRegExp), Pythonem lub natywnym smakiem Ruby 1.8. Użycie tego regexu z PCRE wymaga, aby PCRE było skompilowane z obsługą UTF-8, a kategorie Unicode mogą być użyte z funkcjami PHP preg
(które polegają na PCRE), jeśli do regexu zostanie dołączona opcja /u
.
Poniższy regex pokazuje obejście dla Pythona:
^+$
Opcje regexu: Unicode
Smaki Regex: Python
Obchodzimy tutaj brak kategorii Unicode w Pythonie poprzez użycie flagi UNICODE
lub U
podczas tworzenia wyrażenia regularnego. Zmienia to znaczenie niektórych tokenów regex, sprawiając, że korzystają one z tablicy znaków Unicode. \w
’ prowadzi nas przez większość drogi do rozwiązania, ponieważ pasuje do znaków alfanumerycznych i podkreślenia. Przez użycie jego odwrotności ’\W
’ w zanegowanej klasie znaków, możemy usunąć podkreślenie z tego zestawu. Podwójne negacje, takie jak ta, są czasami całkiem przydatne w wyrażeniach regularnych, choć mogą być trudne do ogarnięcia. Python 3.x domyślnie zawiera znaki nieASCII w skrótach takich jak ’\w
’ i dlatego nie wymaga flagi UNICODE
.