Regex для поиска символов: !$%^&*()_+|~-=`{}[]:";'<>?,./

Я пытаюсь создать Regex тест в JavaScript, который будет проверять строку на содержание любого из этих символов:

!$%^&*()_+|~-=`{}[]:";'<>?,./

Подробнее Если интересно :)

Это для довольно крутого приложения для смены пароля, над которым я работаю. Если вам интересно, вот остальная часть кода.

У меня есть таблица, в которой перечислены требования к паролю, и когда конечный пользователь набирает новый пароль, он будет проверять массив Regexes и ставить галочку в соответствующей строке таблицы, если он... подходит :) Мне просто нужно добавить вот это вместо 4-го элемента в массиве validation.

var validate = function(password){
    valid = true;

    var validation = [
        RegExp(/[a-z]/).test(password), RegExp(/[A-Z]/).test(password), RegExp(/\d/).test(password), 
        RegExp(/\W|_/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password), 
        !RegExp($('#txtUsername').val()).test(password), !RegExp("cisco").test(password), 
        !RegExp(/([a-z]|[0-9])\1\1\1/).test(password), (password.length > 7)
    ]

    $.each(validation, function(i){
        if(this)
            $('.form table tr').eq(i+1).attr('class', 'check');
        else{
            $('.form table tr').eq(i+1).attr('class', '');
            valid = false
        }
    });

    return(valid);

}

Да, есть также соответствующая валидация на стороне сервера!

79
задан pixelbobby 17 September 2016 в 20:58
поделиться

1 ответ

Простым способом достигнуть этого является отрицательный набор [^\\w\s]. Это по существу ловит:

  • Что-либо, что не является буквенно-цифровым знаком (буквы и числа)
  • Ничто, что не является пространством, вкладкой, или разрыв строки (коллективно называемый пробелом)

По некоторым причинам [\W\S] не работает тот же путь, это не делает никакой фильтрации. Комментарий Zael на одном из ответов обеспечивает что-то вроде объяснения.

-1
ответ дан 24 November 2019 в 10:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: