如何检查一个字符串是否至少包含一个数字、一个字母和一个既不是数字也不是字母的字符?

4

这段文本需要翻译为中文:

这是一段关于JavaScript的内容。

符合要求的字符串示例:

JavaScript1*

Pu54 325

()9c

不符合要求的字符串示例:

654fff

%^(dFE

我尝试了以下方法:

var matches = password.match(/\d+/g);
if(matches != null)
 {
        //password contains a number
        //check to see if string contains a letter
        if(password.match(/[a-z]/i))
        {
            //string contains a letter and a number
        }
 }

是的。我尝试了很多方法。 - Michael Drum
1个回答

5
你可以使用正则表达式:
我从这里获取了它:密码的正则表达式
var checkPassword = function(password){
    return !!password.match(/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%* #+=\(\)\^?&])[A-Za-z\d$@$!%* #+=\(\)\^?&]{3,}$/);
};

我使用这个正则表达式:
至少3个字符,其中包含1个字母、1个数字和1个特殊字符:
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%* #=+\(\)\^?&])[A-Za-z\d$@$!%* #=+\(\)\^?&]{3,}$"

这个正则表达式将强制执行以下规则:

至少一个英文字母,(?=.*?[A-Za-z])

至少一个数字,(?=.*\d)

至少一个特殊字符,(?=.[$@$!% #+=()\^?&]) 如果需要,您可以添加更多...

最小长度为3个字符 (?=.[$@$!% #?&])[A-Za-z\d$@$!%* #+=()\^?&]{3,} 包括空格

如果您想添加更多的特殊字符,您可以像我一样将其添加到正则表达式中,例如'('(您需要在两个位置添加它)。

对于那些想知道这两个感叹号是什么的人,答案在这里:JavaScript中的!!(非非)运算符是什么?


那很完美。谢谢! - Michael Drum
@michael-drum 两个感叹号是为了让函数始终返回布尔值 - 参考这个链接https://dev59.com/jXRA5IYBdhLWcg3w6SRH。 - sidanmor
@michael-drum,为什么你没有将这个答案标记为“解答你的问题”呢? - sidanmor
到目前为止,我知道它不能处理空格或“+”符号。带有这些字符的字符串应该返回true; - Michael Drum
@michael-drum,你应该将它们添加到特殊字符列表中 - 就像这样 /^(?=.[A-Za-z])(?=.\d)(?=.[$@$!% #+=?&])[A-Za-z\d$@$!%* #+=?&]{3,}$/。 - sidanmor
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接