2016-08-30 2 views
2

У меня есть регулярное выражение, чтобы разрешить символы, по крайней мере один номер и специальный характер текста предел 8 до 15 ..Регулярное выражение, чтобы либо номер или специальные символы

function validatePassword(password) { 
    var re = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,15}$/i; 
    return re.test(password); 
} 

Теперь мне нужно изменить это регулярное выражение, чтобы принять либо один номер или один специальный символ и тот же 8 до 15 предела

+0

ли вы имеете в виду, что должен требовать ровно один номер * или * специальный символ (но не оба), с другими персонажами не все буквенные? – nnnnnn

+0

приведены примеры действительных/недопустимых входов. Из вашего описания неясно, следует ли учитывать другие альфа-символы или не должно быть – RomanPerekhrest

ответ

3

Вы должны удалить предпросмотр требуя цифры, и переместите \d в упреждающую выборку, требующей специальный символ:

var re = /^(?=.*[A-Za-z])(?=.*[\[email protected]!%*#?&])[A-Za-z\[email protected]!%*#?&]{8,15}$/; 
           ^^ 

Если вам не нужно требовать хотя бы одной буквы, удалите (?=.*[A-Za-z]).

Детали:

  • ^ - начало строки
  • (?=.*[A-Za-z]) - должно быть по крайней мере 1 ASCII буква
  • (?=.*[\[email protected]$!%*#?&]) - должно быть по крайней мере одна цифра, или какой-либо один из специальные символы в классе
  • [A-Za-z\[email protected]!%*#?&]{8,15} - строка должна состоять только из букв, цифр и специальных символов, от 8 до 15 ences.
  • $ - конец строки.

Обратите внимание, что когда вы используете a-zA-Z, вам не нужен /i регистрозависимости модификатор.

Кроме того, нет необходимости повторять $ в одном и том же классе символов.

+1

его рабочие благодарности – Mohanraj

+1

Кстати, вы можете протестировать регулярное выражение [здесь, в regex101.com] (https://regex101.com/r/tB4mL6/1). –

1

Все, что вам нужно, чтобы объединить цифр и специальных символов lookaheads:

function validatePassword(password) { 
    var re = /^(?=.*[A-Za-z])(?=.*[[email protected]$!%*#?&0-9])[A-Za-z\[email protected]$!%*#?&]{8,15}$/i; 
    return re.test(password); 
} 

Объяснение:

  • цифры могут быть определены как [0-9] или \d тоже.
  • Я выбрал спецификацию класса символов, чтобы они вписывались в специальный класс символов char.
  • опережения нечто вроде (?=...)
+0

благодарит свою работу – Mohanraj

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