【发布时间】:2020-06-09 12:28:56
【问题描述】:
抱歉,我缺乏正则表达式技能。
我正在使用 parsleyjs,我有这个规则:
export const PASSWORD_RULE5 = /[\[\]@$!%*?&£€^(){}:"|<>/]{1}/;
这行得通。应用该规则,如果其中一个字符未出现在密码中,它会突出显示并警告他们需要添加一个特殊字符。
问题是输入有 data_parsley_pattern:
data_parsley_pattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&£€^(){}:"|<>])[A-Za-z\\d!$%@#£€*?&]{8,}$"
这允许使用
的密码- 至少 8 个字符
- 至少 1 个大写字符
- 至少 1 个小写字符
- 至少 1 个数字
- 至少 1 个特殊字符
如果他们在密码中输入^,则不再突出显示,但 data_parsley_pattern 仍然失败。
无论我尝试什么,我都无法让它发挥作用。
我尝试在此处添加新的允许的特殊字符并尝试转义它们,但规则仍然失败。
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&**£€^(){}:"|<>/**])[A-Za-z\\d!$%@#£€*?&]{8,}$
或者
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&**£€\\^\\(\\)\\{\\}\\:\"\|\\<\\>\\/**])[A-Za-z\\d!$%@#£€*?&]{8,}$
我需要区别对待这些角色吗?
感谢您的任何见解。
【问题讨论】:
-
但是,虽然
^允许在正向前瞻中使用,但之后它不在字符类中。所以它失败了是完全有道理的。使用^输入的密码在不 包含该字符的字符类上失败,这意味着它是不允许的。嗯,这就是我阅读你的问题的方式。这只是一个错字吗? -
非常感谢你们。我设法用你的 cmets 解决了这个问题!
标签: javascript regex parsley.js