【问题标题】:HTML5 - input, using placeholder attribute for an "example", possible to use pattern attribute to ensure that "example" is not submitted?HTML5 - 输入,对“示例”使用占位符属性,可以使用模式属性来确保不提交“示例”?
【发布时间】:2012-01-31 23:36:27
【问题描述】:

我正在创建一个注册表单。 我想在密码输入上使用 placeholder 属性来部分解释使用模式属性使用哪种类型的正则表达式进行验证。

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

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

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

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

我在占位符属性和标题属性中使用的示例是:Examp1e。 我想确保用户没有专门输入“Examp1e”作为他们的密码。 有人对我应该如何完成这项任务有任何建议、建议或意见吗?

【问题讨论】:

    标签: regex html passwords


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      为此,我假设密码中只允许使用 ASCII 字符,并且“特殊字符”指的是标点符号:

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

      这将使正则表达式

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

      注意事项:

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

      • 我还将“digits”和“specials”前瞻合并为一个。在这种情况下,这没什么大不了的,但我的一条经验法则是,如果字符类可以完成这项工作,则永远不要使用替代。

      • [!-~] 是任何“可见”ASCII 字符(即除空格或控制字符之外的任何字符)的旧 Perl 习惯用法。

      • 我完全不知道原作者想用 (?![.\n]) 做什么。

      【讨论】:

      • 现在才看到,非常感谢,让我长见识了!
      猜你喜欢
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 2012-10-17
      • 2019-08-26
      相关资源
      最近更新 更多