2016-09-07 2 views
1

Я использую шаблон Html5 для проверки пароля, и мне нужно убедиться, что строка содержит как минимум 2 числа и не менее 4 букв в Любой заказ.Html5 шаблон, который проверяет как минимум 2 цифры и не менее 4 букв в любом порядке

Я сделал, и это то, что я получил до сих пор: [a-z]{4,}[0-9]{2,}|[0-9]{2,}, но мне нужно, чтобы он был в любом порядке, например: 9pog8k.

Если у меня есть 2 цифры и 4 буквы в любом порядке, чем в порядке, независимо от того, что еще у меня есть.

Спасибо!

+0

Пожалуйста, советы, каким должен быть образец> Пожалуйста, создайте мой шаблон для меня. Как насчет того, чтобы вы сначала попытались создать что-то свое? – Roberrrt

+0

Я сделал это, и это то, что я получил до сих пор: [az] {4,} [0-9] {2} | [0-9] {2,} но мне нужно, чтобы это было в любом порядке, например: 9pog8k –

+0

Но означает ли это, что пароль может содержать только буквы и цифры? Или любые персонажи? –

ответ

2

[a-z]{4,}[0-9]{2,}|[0-9]{2,} соответствует 4 или более буквам + 2 или более цифр, ИЛИ 2 или более цифр, начиная с конца заканчивается как pattern regex по умолчанию привязан.

Вы должны использовать lookaheads на самом деле проверить, если какой-либо шаблон появляется в строке в любом порядке, а не простое чередование:

input:valid { 
 
    color: green; 
 
} 
 
input:invalid { 
 
    color: red; 
 
}
<form name="form1"> 
 
<input pattern="(?=(?:[^a-zA-Z]*[a-zA-Z]){4})(?=(?:\D*\d){2}).*" title="Min. 2 digits and min. 4 letters are required"/> 
 
<input type="Submit"/> 
 
</form>

Атрибут шаблон HTML5 нуждается в полной строка соответствует, поэтому .* в конце необходим. Подробнее

Pattern:

  • (?=(?:[^a-zA-Z]*[a-zA-Z]){4}) - там должно быть 4 последовательности 0+ не-букв с последующей буквой
  • (?=(?:\D*\d){2}) - там должно быть 2 последовательности 0+ нецифровые с последующим цифра
  • .* - совпадают любые символы, 0+ вхождений
+1

Вот и все. Еще раз спасибо. –

+1

Великий Wiktor !!! – Knitesh

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