我有一个有效的正则表达式,它至少匹配1个大写字母,1个小写字母和1个数字:
"(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*"
我正在尝试修改为仅允许使用下划线,美元符号或英镑符号,_ $ £
我不确定如何处理。这是不正确的:
"(?=.*\d)(?=.*[a-z_$£])(?=.*[A-Z]).*"
例如:
'Pa$$w0rd' - true
'orange1_' - false
'Apple22_' - true
'Banana100_!' - false
该示例出了什么问题?
答案 0 :(得分:1)
您的正则表达式已允许所有这些字符。如果我正确理解了您的问题,则只允许 这些特殊字符(字母和数字除外)。在这种情况下,您应将正则表达式末尾的.*
更改为[\d\w$£]*
(_
中包含\w
):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\d\w$£]*$