对不起我的正则表达式技能。
我正在使用parsleyjs&我有这个规则:
export const PASSWORD_RULE5 = /[\[\]@$!%*?&£€^(){}:"|<>/]{1}/;
这有效。将应用此规则,如果密码中未出现这些字符之一,它将突出显示并警告他们需要添加特殊字符。
问题是输入具有data_parsley_pattern:
data_parsley_pattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&£€^(){}:"|<>])[A-Za-z\\d!$%@#£€*?&]{8,}$"
这允许使用密码
如果他们在密码中输入^
,它将不再突出显示,但是data_parsley_pattern仍然失败。
无论我尝试什么,我都无法使它正常工作。
我已经尝试在此处添加新的允许的特殊字符,也尝试将其转义,但是规则仍然失败。
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&**£€^(){}:"|<>/**])[A-Za-z\\d!$%@#£€*?&]{8,}$
或
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&**£€\\^\\(\\)\\{\\}\\:\"\|\\<\\>\\/**])[A-Za-z\\d!$%@#£€*?&]{8,}$
我需要区别对待这些字符吗?
感谢您的见解。
感谢@JvdV的评论,我意识到我在正则表达式的重要部分中缺少特殊字符。
感谢@Pradeep,您在注释中提供的工具在测试Regex时提供了巨大的帮助。
我遇到的另一个问题是,我正在使用ASP.Net MVC和@ Html.PasswordFor,因此转义字符略有不同。
这是上述问题的解决方案:
data_parsley_pattern =“ ^(?=。[az])(?=。 [AZ])(?=。\ d)(?=。 [\\\” @ $ !%?&£€^(){}:| <> /])[A-Za-z \ d!$%@#£€?&^(){} \\\“:| <> /] {8,} $“