Ответ 1
var regex = /^[[email protected]#\$%\^\&*\)\(+=._-]+$/g
Должен работать
Также может потребоваться минимальная длина, например 6 символов
var regex = /^[[email protected]#\$%\^\&*\)\(+=._-]{6,}$/g
Я пытаюсь создать проверку для поля пароля, которая позволяет использовать только символы a-zA-Z0-9
и [email protected]#$%^&*()_+-=
Кажется, я не понимаю, как это.
Какая разница при использовании regex = /a-zA-Z0-9/g and regex = /[a-zA-Z0-9]/
и каких символов из [email protected]#$%^&*()_+-=
необходимо экранировать?
То, что я пробовал до сих пор:
var regex = /[email protected]#\$%\^\&*\)\(+=._-/g
но без успеха
var regex = /^[[email protected]#\$%\^\&*\)\(+=._-]+$/g
Должен работать
Также может потребоваться минимальная длина, например 6 символов
var regex = /^[[email protected]#\$%\^\&*\)\(+=._-]{6,}$/g
более простой способ соответствовать специальным символам:
/\W|_/g
\ W Соответствует любому символу, который не является символом слова (буквенно-цифровой и подчеркивание).
Подчеркивание считается специальным символом, поэтому добавьте логическое значение, соответствующее либо специальному символу, либо _
Какая разница?
/[a-zA-Z0-9]/
- это класс символов, который соответствует одному символу внутри класса. Он состоит из трех диапазонов.
/a-zA-Z0-9/
означает буквальную последовательность этих 9 символов.
Какие символы из
[email protected]#$%^&*()_+-=
необходимы для экранирования?
Внутри класса символов только минус (если не в конце) и обводка (если в начале). Вне charclass .$^*+()
имеют особое значение и должны быть экранированы, чтобы соответствовать буквально.
допускает только символы
a-zA-Z0-9
и[email protected]#$%^&*()_+-=
Поместите их в класс символов, затем пусть repeat и потребует сопоставить всю строку с ними anchors:
var regex = /^[[email protected]#$%\^&*)(+=._-]*$/
Как насчет: -
var regularExpression = /^(?=.*[0-9])(?=.*[[email protected]#$%^&*])[[email protected]#$%^&*]{6,}$/;
Он позволит не менее 6 символов, включая числа, алфавиты и специальные символы
Есть некоторые проблемы с выше написанным Regex.
Это работает отлично.
^[a-zA-Z\d\-_.,\s]+$
Разрешены только специальные символы, которые могут быть расширены после запятой.
это фактическое совпадение регулярных выражений:
/[-!$%^&*()_+|~='{}[:;<>?,[email protected]#\]]/g
// Regex for special symbols
var regex_symbols= /[-!$%^&*()_+|~='{}\[\]:\/;<>?,[email protected]#]/;
Regex для минимум 8 символов, одного алфавита, одного числового и одного специального символа:
/^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]#$%^&*])[A-Za-z\[email protected]#$%^&*]{8,}$/
Это регулярное выражение хорошо работает для подтверждения пароля:
/[ !"#$%&'()*+,-./:;<=>[email protected][\\\]^_'{|}~]/
Этот список специальных символов (включая пробелы и знаки препинания) взят здесь: https://www.owasp.org/index.php/Password_special_characters. Это было немного изменено, потому что для правильной работы регулярного выражения пришлось экранировать обратную косую черту ('\') и закрывающую скобку (']'). Вот почему были добавлены два дополнительных символа обратной косой черты.
Вы можете быть конкретны, проверяя на недопустимые символы. Это вернет истину для всего, что не буквенно-цифровое и пробел:
var specials = /[^A-Za-z 0-9]/g;
return specials.test(input.val());
Полный набор специальных символов:
/[\!\@\#\$\%\^\&\*\)\(\+\=\.\<\>\{\}\[\]\:\;\'\"\|\~\'\_\-]/g
Чтобы ответить на ваш вопрос:
var regular_expression = /^[A-Za-z0-9\!\@\#\$\%\^\&\*\)\(+\=\._-]+$/g