gpt4 book ai didi

javascript - 密码验证正则表达式 : require and forbid certain characters

转载 作者:行者123 更新时间:2023-11-30 13:54:33 24 4
gpt4 key购买 nike

我有一个带有 jQ​​uery 验证和 System.ComponentModel.DataAnnotations 的 MVC 表单

问题是如果我在密码文本框中输入 & 然后 jQuery 和 MVC Model.Isvalid 允许它,即使它不是允许的字符之一。

我曾尝试在 Google 上搜索此内容,但返回的结果与该问题无关。即 JavaScript:客户端与服务器端验证 - 堆栈内存溢出

下面是我的正则表达式,以防我弄错了。

RegularExpression("^((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,10})", 
ErrorMessage = "{0} must be between 6 and 10 characters and have at least 1 upper case letter, 1 lower case letter, 1 number and contain either @#$%")

最佳答案

示例中的模式 ^((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$% ]).{6,10}) 使用正面前瞻来确保输入字符串中存在某些字符类,但它不会以任何方式阻止其他类型的字符出现。每个前瞻组都以 .* 开头,这实际上允许任何内容,因此 & 或实际上任何其他字符都将在输入字符串中被接受,并且前瞻表示的任何内容都将是另外强制执行。

换句话说,这种使用仅正前瞻的方法将使某些类型的字符需要,但不会使任何字符不允许

为了克服这个问题,您可以简单地添加另一个前瞻组,但这次是负组:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%])(?!.*[&]).{6,10}$

此外,请注意以字符串终止符 $ 结束模式(您的示例中缺少)。否则,正则表达式引擎将为长度超过 10 个字符的输入生成匹配项。

参见 example在这里。

关于javascript - 密码验证正则表达式 : require and forbid certain characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com