Регулярное выражение Javascript проверяет строку пароля (избегая знаков препинания) - PullRequest
4 голосов
/ 26 ноября 2011

Я пытаюсь проверить строку пароля с помощью JavaScript, и мне нужна помощь с регулярным выражением. Я пробовал некоторые учебные пособия, но, думаю, у меня возникли проблемы с пониманием того, как избежать квантификаторов и / или метасимволов.

Я хочу убедиться, что строка пароля содержит только один или несколько (макс. 32) символов из следующих диапазонов:

"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"012345678901234567890123456789"
"!@#%&/(){}[]=?+*^~-_.:,;"

Первые три пролета довольно просты, но я не могу понять последний. В основном мой сценарий выглядит примерно так:

var password = "user_input_password";

if (/^[A-Za-z0-9!@#$%...]{1,32}$/.test(password)) {
    document.write('OK');
} else {
    document.write('Not OK');
}

Любая помощь или вклад высоко ценится, спасибо!

Ответы [ 3 ]

4 голосов
/ 26 ноября 2011

В общем, вы можете экранировать метасимвол, используя обратную косую черту \; однако внутри класса персонажа вам нужно выбрать только ], \ и - (^ имеет значение только в самом начале). Что-то вроде [\w!@#%&/(){}[\]=?+*^~\-.:,;] будет делать то, что вы хотите.

\w равно [A-Za-z0-9_].

Таким образом, полный тест будет выглядеть примерно так:

/^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)
2 голосов
/ 26 ноября 2011
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/
0 голосов
/ 26 ноября 2011

Вы также можете сопоставить все символы, которые не считаются пробелами (пробел, новая строка, табуляция)

/^[^\s]{1,32}$/.test(password);

Чтобы исключить кавычки (я не видел их в вашем примере), вы можете добавить их в:

/^[^\s'"]{1,32}$/.test(password);
...