HTML5模式验证

时间:2016-05-18 21:12:22

标签: regex html5 validation

我正在尝试使用以下要求创建密码字段。

  • 最少8个字符
  • 最多16个字符
  • 必须包含一个数字或特殊字符
  • 只能使用以下特殊字符:

    ,`〜! @#$%^& *); '[]“{}。

我阅读this Stack Overflow question并尝试按照示例中的内容进行操作。这就是我想出的:

^[a-zA-Z](?=.*[0-9.,`~!@#$%^&*\);'\[\]\"\{\}.]).{8,16}+

这就是我使用模式的方式:

<input id="Password" class="form-control" pattern="^[a-zA-Z](?=.*[0-9.,`~!@#$%^&amp;*\);'\[\]\&quot;\{\}.]).{8,16}+" required="required" type="password">

然而,这个正则表达式似乎没有按预期工作。如果我输入“密码”作为我的输入,则应该拒绝。相反,这个字符串被接受。如果有人能帮我一把,我将不胜感激。

3 个答案:

答案 0 :(得分:2)

以下是使用pattern属性的方法:

&#13;
&#13;
input:valid {
  color: green;
}
input:invalid {
  color: red;
}
&#13;
<form name="form1"> 
 <input pattern="(?=.*[\d,`~!@#$%^&*);'[\]\x22{}.]).{8,16}" title="Please check the input!"/>
 <input type="Submit"/> 
</form>
&#13;
&#13;
&#13;

你只需要逃避&#34;双引号为\x22,字符类中包含]符号。

由于默认情况下锚定了pattern,因此不需要任何锚点。

答案 1 :(得分:0)

以下代码会根据您的规则检查您的密码(虽然在2个正则表达式中)

var psw = 'yourPas$word';
if (
    // ensure the length is between 8 & 16
    /^.{8,16}$/.test(psw) && 
    // ensure the presence of a special char
    /^.*[,`~!@#$%^&*);'\[\]"{}.].*$/.test(psw)
    ) {
    console.log('hurray is valid');
} else {
    console.log('booo');
}

答案 2 :(得分:0)

在模式中使用此正则表达式以确保密码包含字母数字/符号:

^(?=.*[a-z])(?=.*[\d,`~!@#$%^&*);'[\]\x22{}]).{8,16}$

可能进一步改进。