2017-02-16 2 views
0

Я хочу проверить, что пароль содержит не буквенно-цифровой символ (например!).JQuery - подтвердите, что пароль содержит не буквенно-цифровой символ

Есть ли подобное решение для этого, так как это для буквенных символов: Я хочу true, если пароль содержит не буквенно-цифровой символ.

var upperCase= new RegExp('[A-Z]'); 

if($("#input-set-password").val().match(upperCase)) 
{ 
} 
+1

Обязательное XKCD: [Пароль Strength] (https://xkcd.com/936/) – Andreas

+0

Итак, вы хотите, чтобы заставить пользователей создавать пароль, они не могли бы вспомнить, что записывать его на заметках, сохраненных в электронной почте или подобных? Это хороший подход для поощрения использования алфавитно-цифрового символа. Я не думаю, что это умно. – qualbeen

+0

xkcd: Сила пароля , и этот ответ дает 100% смысл, я передумаю. Ty. – Gnorg

ответ

0

Вот как это сделать. переменная result будет верно, если это только буквенно-цифровой и ложно, если оно содержит не буквенно-цифровые символы

var reg_password1 = 'test123'; 
var letters = /^[a-zA-Z0-9]+$/; 
var result = letters.test(reg_password1); 

Чтобы проверить, если он содержит, по меньшей мере, 1 число и строчные, так и прописные буквы:

if(/\d/.test(reg_password1) && /[a-z]/.test(reg_password1) && /[A-Z]/.test(reg_password1)) 

К объединить эти:

var reg_password1 = 'test123'; 
if(/^[a-zA-Z0-9]+$/.test(reg_password1) && /\d/.test(reg_password1) && /[a-z]/.test(reg_password1) && /[A-Z]/.test(reg_password1)) 
{ 
    //Has at least 1 uppercase 1 lowercase 1 number and is only alphanumeric 
} 

Вот JSFiddle

+0

Я вижу. Хм, но я хочу проверить, чтобы пароль, по крайней мере, содержал один символ приоритета, один числовой и один не буквенно-цифровой (!). – Gnorg

+0

Должен теперь работать – 131

+0

Я ищу что-то, что работает с! ¤% и т. Д. Таким образом, не-буквенные символы. Я хочу иметь строку типа «Asd1!» return true. – Gnorg

0

Здесь было две вещи:

1) Ваше выражение проверяет, присутствует ли один символ верхнего регистра в любом месте строки. Тогда как мое отредактированное выражение ^[A-Z]+$ «переводит» в:

«Строка, которая имеет прописные буквы (+ = по крайней мере, один или больше) от его начала (^) до ее конца ($).»

2) match() будет - как следует из названия - найти и вернуть все совпадения. Вы хотите использовать test() на регулярное выражение здесь вместо этого, который будет возвращать истинным или ложным, как вы можете видеть:

var upperCase= new RegExp('^[A-Z]+$'); 
 
console.log(upperCase.test($("#input-set-password").val())); 
 
console.log(upperCase.test($("#input-set-password2").val())); 
 
console.log(upperCase.test($("#input-set-password3").val()));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="input-set-password" value="ANBASFJH" /> 
 
<input type="text" id="input-set-password2" value="ANBASFJHasg" /> 
 
<input type="text" id="input-set-password3" value="ANBASF123" />

0

Я использовал jquery.validate.js. Вам не нужно возиться с проверкой js, если вход имеет правильные символы, просто пометьте его на html, и он сделает все остальное за вас. Например

<input data-val="true" <!-- Tell validate to check this input --> data-val-length="The Password must be at least 6 characters long." <!-- Message shown when length isn't meet --> data-val-length-max="100" <!-- Max length for 'this' input --> data-val-length-min="6" <!-- Minimum length for 'this' input--> data-val-required="The Password field is required." <!-- Error message shown if input is empty---> id="Password" name="Password" type="text" value=""> 

Подробнее о https://jqueryvalidation.org/

Смежные вопросы