HTML5 - 输入,使用“示例”的占位符属性,可以使用模式属性来确保不提交“示例”?

时间:2012-01-02 17:36:13

标签: regex html5 passwords

我正在创建一个注册表单。 我想在密码输入上使用占位符属性,部分地使用pattern属性解释用于验证的正则表达式的类型。

这是我在www.html5pattern.com找到的正则表达式:

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

这个正则表达式的解释如下:

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

我在占位符属性中使用的示例以及title属性是:Examp1e。 我想确保用户没有特别输入“Examp1e”作为他们的密码。 有没有人对我应该如何完成这项任务有任何建议,建议或意见?

2 个答案:

答案 0 :(得分:1)

你开始使用的正则表达式很糟糕。首先,JavaScript \W等同于[^A-Za-z0-9_]:任何不是ASCII字符的字符。这包括所有ASCII标点符号,空格和控制字符,以及所有非ASCII字符。对于#34;特殊字符"没有官方定义。我知道,但我很确定这不是作者的意思。

为了实现这一点,我假设密码中只允许使用ASCII字符,并且"特殊字符"是指标点字符:

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

这会使正则表达式

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

注意:

  • 请注意我是如何将^拉出第一组的;它在那里锚定整个正则表达式,而不仅仅是那一个预测。

  • 我还合并了&#34;数字&#34;和&#34;特价&#34;向前看。在这种情况下,这不是什么大问题,但我的一个规则是,如果角色类能够完成这项工作,你绝不应该使用轮换。

  • [!-~]是任何&#34;可见&#34;的旧Perl习语。 ASCII字符(即除了空白或控制字符之外的任何东西)。

  • 我没有想到原作者试图用(?![.\n])做什么。

答案 1 :(得分:0)

当通过html5模式属性验证输入时,这个正则表达式对我很有效,因为我无法从有效地址中生成无效:

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