【问题标题】:Regex [data parsley pattern] Allow special charactersRegex [数据欧芹模式] 允许特殊字符
【发布时间】: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


【解决方案1】:

感谢@JvdV 的 cmets,我意识到我在正则表达式的一个重要部分中遗漏了我的特殊字符。

感谢@Pradeep,您在评论中提供的工具在测试 Regex 时提供了巨大帮助。

我遇到的另一个问题是我使用的是 ASP.Net MVC 和 @Html.PasswordFor,因此转义字符略有不同。

这是我上面问题的解决方案:

data_parsley_pattern = "^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[\\\"@$!%?&£€^(){}:|/])[A-Za-z\d!$%@#£€?& ^(){}\\\":|/]{8,}$"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多