繁体   English   中英

如何使输入密码至少需要一个特殊字符(包括括号)

[英]How to make input password require at least one special character (bracket included)

我想知道如何将带有括号的特殊字符部分(如 {} [] () 和其他内容(如“')添加到我在下面尝试的唯一字符中,但由于某种原因,当我添加另一个字符时它停止工作.

<-- works but does not have any brackets or quotes for special character-->
<form acton = "#">      
    <input type="password" id="newPass" required
      pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*?[0-9])(?=.*?[!@#$%^&*+`~=?\|<>/]).{8,}"

    <button>submit</button>

</form>

上面的部分有效,但没有引号或更多特殊字符

下面的代码有括号但不起作用

<-- does not work (if you do not enter special character user will be able to submit but it does not have any brackets -->

<form acton = "#">      
    <input type="password" id="newPass" required
      pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*?[0-9])(?=.*?[~`!@#$%^&*()-_=+[]{};:'.,"\|/?><]).{8,}"

    <button>submit</button>

</form>

这也不起作用(来自答案)

<form acton = "#">      
    <input type="password" id="pass" required
      pattern="(?=.*\d)(?=.*[a-z])(?=.*?[0-9])(?=.*?[~`!@#$%\^&*()\-_=+\[\]{};:\'.,\"\\|/?\>\<]).{4,}">

    <button>submit</button>

</form>

我正在寻找一个使底部(带括号的那个和我包括的所有特殊字符)有效的答案。

由于它是正则表达式,因此[.....]内的所有字符都是允许的,因此您应该在其中添加括号。 您可以使用转义字符来做到这一点(因为括号在正则表达式中起作用)。 因此,只需将\]\[添加到[.....]中允许的字符即可。

尝试:

<input type="password" name="pw" pattern="(?=.*?[#?!@$%^&*-\]\[])"

顺便说一句.. 我建议使用正则表达式备忘单,它将在验证任务中帮助您很多。

至于你的编辑:

"'需要转义。虽然\" \'不起作用,但您可以使用\x27\x22代替,它们是 ascii 表中"'的十六进制表示。

尝试:

<form acton = "#">      
        <input type="password" id="pass"  required pattern = "(?=.*\d)(?=.* 
     [a-z])(?=.*?[0-9])(?=.*?[~`!@#$%\^&*()\-_=+[\]{};:\x27.,\x22\\|/?><]).{4,}">

        <button>submit</button>

</form>

如果在模式搜索期间需要匹配正则表达式(例如\] )字符,您应该转义它们。 另外,请参阅现有答案:

密码中的大括号和方括号

以下对我有用,希望它对你有用:(我只是添加了转义字符)

   <input type="password" id="newPass" required
      pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*?[0-9])(?=.*?[!@#$%^&*+`~'=?\|\]\[\(\)\-<>/]).{8,}">

你实际上非常接近。 最大的错误是:

您应该escape character group中的一些特殊字符,并且应该将hyphen as the last character (否则它是一个范围)。

这是您要求的 RegExp:

<input type="password" id="pass"  required pattern = "(?=.*\d)(?=.*[a-z])(?=.*?[0-9])(?=.*?[~`!@#$%^&amp;*()_=+\[\]{};:&apos;.,&quot;\\|\/?&gt;&lt;-]).{4,}">

更新:我忘记了 html 编码模式以直接在 html 中使用。 现在它应该可以工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM