正则表达式只允许某些字符

时间:2018-07-12 10:18:28

标签: regex

我有一个有效的正则表达式,它至少匹配1个大写字母,1个小写字母和1个数字:

"(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*"

我正在尝试修改为仅允许使用下划线,美元符号或英镑符号,_ $ £我不确定如何处理。这是不正确的:

"(?=.*\d)(?=.*[a-z_$£])(?=.*[A-Z]).*"

例如:

'Pa$$w0rd' - true
'orange1_' - false
'Apple22_' - true
'Banana100_!' - false

该示例出了什么问题?

1 个答案:

答案 0 :(得分:1)

您的正则表达式已允许所有这些字符。如果我正确理解了您的问题,则只允许 这些特殊字符(字母和数字除外)。在这种情况下,您应将正则表达式末尾的.*更改为[\d\w$£]*_中包含\w):

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\d\w$£]*$

在线演示:https://regex101.com/r/6ZpaD2/2