Нет, ваш подход не очень хорош
Попробуйте этот.Вы должны заполнить специальные символы, которые вы хотите в класс символов.Вам необходимо экранировать символы ]\-^
, поскольку они имеют особое значение в классе (в зависимости от их положения).
^(?=.*[A-Za-z0-9].*[A-Za-z0-9])[$!@{}[\]A-Za-z0-9]*$
См. Здесь здесь, в Regexr
Первая часть - это позитивный взгляд, который обеспечивает два символа вашего требования [A-Za-z0-9]
где-то в строке.
Затем следует класс символов [A-Za-z0-9])[$!@\{\}\[\]A-Za-z0-9]
, в который вы можете вставить символы, которым вы хотите соответствовать.
^
в начале моего выражения гарантирует, что оно совпадает с начала начала, а $
в конце - что оно совпадает с концом строки.
^
в начале вашего примера является отрицанием полного класса символов, я думаю, вы не хотите, если вы хотите найти соответствие для символа ^
, поместите его где-нибудь еще в классе.-
в середине вашего класса определяет диапазон символов, который соответствует всему, начиная с -"
, я не знаю, что это за символы, но, вероятно, больше, чем вы хотите.Поместите -
в начало или конец или уберите его.