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