在我正在使用的系统上,我们有一个Password类,可以通过在以下条件下抛出异常来验证:
public Password(string password)
: base(password)
{
// Must contain digit, special character, or uppercase character
var charArray = password.ToCharArray();
var hasDigit = charArray.Select(c => char.IsDigit(c)).Any();
var hasSpecialCharacter = charArray.Select(c => char.IsSymbol(c)).Any();
var hasUpperCase = charArray.Select(c => char.IsUpper(c)).Any();
if (!hasDigit && !hasSpecialCharacter && !hasUpperCase)
{
throw new ArgumentOutOfRangeException
("Must contain at least one digit, symbol, or upper-case letter.");
}
}
如果我要在JavaScript中为hasDigit,hasSpecialCharater和hasUpperCase编写相同的检查,它会是什么样的?
JavaScript没有这些相同的角色原型,所以我必须使用正则表达式,不是吗?
答案 0 :(得分:1)
hasDigit:
/\d/.test(password);
hasUpperCase:
/[A-Z]/.test(password);
hasSpecialCharacter:
/[^a-zA-Z0-9]/.test(password);
修改 .test
比.match
答案 1 :(得分:1)
这三个条件可以与:
组合在一起if (/\d|\W|[A-Z]/.test(theString)) {
...
其中
\d
→1位数(0-9),\W
→1个非单词字符(0-9,az,AZ和_以外的任何字符)如果密码匹配,则匹配的字符多于C#的IsSymbol
支持ASCII以外的字符,[A-Z]
→1个大写字符但唯一与\d|\W|[A-Z]
不匹配的字符是a
到z
,我们也可以简单地写一下
if (/[^a-z]/.test(theString)) {
答案 2 :(得分:0)
您应该能够将所有测试合并到一个JS正则表达式中:
if (!passwordString.match(/[^a-z ]/)) {
alert('Invalid password.');
return false;
}