Вы можете использовать класс отрицанных символов здесь:
[^a-zA-Z0-9]
Выше регулярное выражение будет соответствовать одному символу, который не может быть латинскими буквами в нижнем или верхнем регистре или цифрой.
^
в начале класса символов (часть между [
и ]
) отрицает полный класс, так что он соответствует чему-либо , а не в класс, вместо нормального поведения класса персонажей.
Чтобы сделать его полезным, вам, вероятно, понадобится один из них:
Ноль или более таких символов
[^a-zA-Z0-9]*
Звездочка (*
) здесь означает, что предыдущая часть может повторяться ноль или более раз.
Один или несколько таких символов
[^a-zA-Z0-9]+
Знак плюс (+
) здесь означает, что предыдущая часть может быть повторена один или несколько раз.
Полная (возможно пустая) строка, состоящая только из таких символов
^[^a-zA-Z0-9]*$
Здесь символы ^
и $
имеют значение якоря , соответствующие началу и концу строки соответственно. Это гарантирует, что вся строка состоит из символов, не входящих в этот класс символов, и никакие другие символы не идут до или после них.
Полная (непустая) строка, состоящая только из таких символов
^[^a-zA-Z0-9]+$
Если немного поработать, это не гарантирует (и не может) гарантировать, что вы не будете использовать другие символы, возможно, из других сценариев. Строка аеΒ
будет полностью допустимой с указанным выше регулярным выражением, поскольку она использует буквы греческого и кириллического алфавита. Кроме того, есть и другие подводные камни. Строка á
будет проходить над регулярным выражением, тогда как строка ́a
не будет (потому что она строит букву á из буквы a и объединяющую диакритическую метку).
Так что отрицаемые классы персонажей должны быть приняты с осторожностью время от времени.
Я также могу использовать цифры из других скриптов, если я хочу: ١٢٣
: -)
Вы можете использовать класс символов
[^\p{L&}\p{Nd}]
если вам нужно позаботиться о вышеперечисленных вещах.