HTML5 - ввод, используя атрибут placeholder для «примера», возможно ли использовать атрибут pattern, чтобы гарантировать, что «example» не представлен? - PullRequest
0 голосов
/ 02 января 2012

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

Это регулярное выражение, которое я нашел на сайте www.html5pattern.com:

(?=^.{6,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

Объяснение этого регулярного выражения было следующим:

Password (UpperCase, LowerCase, Number/SpecialChar and min 6 Chars)

Пример, который я использовал в атрибуте placeholder вместе с атрибутом title, таков: Examp1e.Я хотел бы убедиться, что пользователь специально не вводит «Examp1e» в качестве своего пароля.У кого-нибудь есть какие-либо советы, предложения или предложения относительно того, как мне следует выполнить эту задачу?

Ответы [ 2 ]

1 голос
/ 08 января 2012

Это регулярное выражение, с которого вы начали, плохо.С одной стороны, JavaScript \W эквивалентен [^A-Za-z0-9_]: любой символ, который не является символом слова ASCII.Сюда входят все знаки препинания, пробелы и управляющие символы ASCII, а также все символы, не входящие в ASCII.Официального определения «специальных символов», о котором я знаю, нет, но я вполне уверен, что это не то, что имел в виду автор.

Для этого я предполагаю, что в ASCII допускаются только символы ASCII.пароль, и что «специальные символы» относится к символам пунктуации:

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

Это будет регулярное выражение

^(?=[!-~]{6,20}$)(?=.*[A-Z])(?=.*[a-z])(?=.*[\d!"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~]).*$

Примечания:

  • Обратите внимание, как я вытащил ^ из первой группы;он здесь, чтобы привязать все регулярные выражения, а не только этот один взгляд.

  • Я также объединил «цифры» и «специальные» взгляды в одно целое.В этом случае это не имеет большого значения, но одно из моих правил состоит в том, что вы никогда не должны использовать чередование, если класс персонажей выполнит эту работу.

  • [!-~] старыйPerl идиома для любого «видимого» символа ASCII (то есть, всего, кроме пробелов или управляющих символов).

  • Я не имею ни малейшего представления, что пытался сделать с этим оригинальный автор (?![.\n]).

0 голосов
/ 08 января 2012

Это регулярное выражение очень хорошо работает для меня при проверке ввода с помощью атрибута шаблона html5, так как я не смог вывести недопустимый из допустимого адреса:

(?=^.{6,20}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...