Вы должны ^
и $
в шаблоне, чтобы указать начало и конец строки, в противном случае он будет только проверить, что есть по крайней мере один действительный символ в строке, не то, что все символы в строке являются действительными.
Также вам понадобится множитель для набора символов, в противном случае он будет соответствовать только строке длиной один символ. Чтобы разрешить ноль или более символов, вы используете *
, и для разрешения одного или нескольких символов вы используете +
. Вы также можете использовать диапазон, например {2,10}
позволяет от 2 до 10 символов.
^
в начале набора должен сделать его отрицательным, поэтому для отказа ^
вам также понадобится его среди символов в наборе.
Косые черты - это разделители для литерала регулярных выражений. Либо вы пишете шаблон в виде строки, которую можно использовать для создания регулярных выражений объекта:
pattern = "^[^^<>%*()#!?]+$";
или записать его как регулярное выражение буквального, которое становится регулярным выражением объекта:
regex = /^[^^<>%*()#!?]+$/;
Кажется мне ваше регулярное выражение будет работать, за исключением того, что возвращаемое значение True, означает, что вход является недопустимым, и значение False означает, что вход активен. – OGHaza