我正在尝试使用以下要求创建密码字段。
只能使用以下特殊字符:
,`〜! @#$%^& *); '[]“{}。
我阅读this Stack Overflow question并尝试按照示例中的内容进行操作。这就是我想出的:
^[a-zA-Z](?=.*[0-9.,`~!@#$%^&*\);'\[\]\"\{\}.]).{8,16}+
这就是我使用模式的方式:
<input id="Password" class="form-control" pattern="^[a-zA-Z](?=.*[0-9.,`~!@#$%^&*\);'\[\]\"\{\}.]).{8,16}+" required="required" type="password">
然而,这个正则表达式似乎没有按预期工作。如果我输入“密码”作为我的输入,则应该拒绝。相反,这个字符串被接受。如果有人能帮我一把,我将不胜感激。
答案 0 :(得分:2)
以下是使用pattern
属性的方法:
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;
你只需要逃避&#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}$
可能进一步改进。