ASP.NET 正则表达式验证器(密码强度)

2024-01-27

我有一个具有以下表达式的验证控件:

(?=(.*\\d.*){2,})(?=(.*\\w.*){2,})(?=(.*\\W.*){1,}).{8,}

这是一个至少包含以下内容的密码2 digits, 2 个字母字符, 1 个非字母数字 and 最少 8 个字符。不幸的是,这似乎不兼容跨浏览器。

此验证在 Firefox 中完美运行,但在 Internet Explorer 中则不然。

您的每个答案的组合会产生:

var format = "^(?=.{" + minLength + ",})" + 
    (minAlpha > 0 ? "(?=(.*[A-Za-z].*){" + minAlpha + ",})" : "") + 
    (minNum > 0 ? "(?=(.*[0-9].*){" + minNum + ",})" : "") + 
    (minNonAlpha > 0 ? "(?=(.*\\W.*){" + minNonAlpha + ",})" : "") + ".*$";

EX: "^(?=.{x,})(?=(.*[A-Za-z].*){y,})(?=(.*[0-9].*){z,})(?=(.*\W.*){a,}).*$"

重要的部分是长度 (?.{x,})first.


(?=(.*\W.*){0,})不是 0 个非字母数字字符。这是至少 0非字母数字字符。如果您希望密码不包含任何非字母数字字符,您可以执行以下任一操作(?!.*\W) or (?=\w*$).

一个更简单的解决方案是跳过\W向前看,并使用\w{8,}代替.{8,}.

Also, \w包括\d。如果你只想要阿尔法,你可以这样做[^\W\d] or [A-Za-z].

/^(?=(?:.*?\d){2})(?=(?:.*?[A-Za-z]){2})\w{8,}$/

这将验证密码至少包含两位数, 两个阿尔法, be 至少 8 个字符长,并包含仅限字母数字字符(包括下划线)。

  • \w = [A-Za-z0-9_]
  • \d = [0-9]
  • \s = [ \t\n\r\f\v]

Edit:要在所有浏览器中使用它,您可能需要执行以下操作:

var re = new RegExp("^(?=(?:.*?\\d){2})(?=(?:.*?[A-Za-z]){2})\\w{8,}$");
if (re.test(password)) { /* ok */ }

Edit2:问题的最新更新几乎使我的整个答案无效。^^;;

如果您用原来的模式替换该模式,您最终仍然应该能够使用 JavaScript 代码。

Edit3:好的。现在我明白你的意思了。

/^(?=.*[a-z].*[a-z])(?=.*[0-9].*[0-9]).{3,}/.test("password123") // matches
/^(?=.*[a-z].*[a-z])(?=.*[0-9].*[0-9]).{4,}/.test("password123") // does not match
/^(?=.*[a-z].*[a-z]).{4,}/.test("password123")                   // matches

它似乎(?= )在 Internet Explorer 中并不是真正的零宽度。

http://development.thatoneplace.net/2008/05/bug-discovered-in-internet-explorer-7.html http://development.thatoneplace.net/2008/05/bug-discovered-in-internet-explorer-7.html

Edit4:更多阅读:http://blog.stevenlevithan.com/archives/regex-lookahead-bug http://blog.stevenlevithan.com/archives/regex-lookahead-bug

我认为这可以解决你的问题:

/^(?=.{8,}$)(?=(?:.*?\d){2})(?=(?:.*?[A-Za-z]){2})(?=(?:.*?\W){1})/
new RegExp("^(?=.{8,}$)(?=(?:.*?\\d){2})(?=(?:.*?[A-Za-z]){2})(?=(?:.*?\\W){1})")

The (?=.{8,}$)需要先来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 正则表达式验证器(密码强度) 的相关文章

随机推荐

  • 如何将 boost::bind 对象传递给函数?

    我有一个一维函数最小化器 现在我正在向它传递函数指针 然而 许多函数有多个参数 其中一些参数是固定的 我已经使用像这样的函子实现了这个 template
  • 如果数组包含重复项则进行二分查找

    Hi 如果我们使用二分搜索在以下数组中搜索 24 则搜索键的索引是多少 array 10 20 21 24 24 24 24 24 30 40 45 我对二分搜索有疑问 如果数组有重复值 它是如何工作的 任何人都可以澄清吗 您建议的数组在中
  • “java.exe”退出,代码为 2

    我将 Google Play 服务添加到我的地图项目中 但现在不断收到此错误 java exe 已退出 代码为 2 我不确定它是否与以代码 1 退出的 java exe 不同 但我已经尝试了网上的所有建议 我的堆大小是1G 我的目标版本是
  • 在 Windows 上部署后,glassfish 将您的类/项目保存在哪里?

    我在 Windows XP 上使用 Glassfish3 1 使用Netbeans部署Web服务项目后 它工作正常 但是当我去 install path glassfish 3 1 glassfish domains domain1 app
  • 通过 Maven 添加 Janino 包时出现“无效的签名文件摘要”错误

    我正在尝试通过 Maven 存储库添加对 Janino 2 7 6 的依赖项 当我尝试运行该应用程序时 出现以下错误 exec maven plugin 1 2 1 exec unpack dependencies JanineAttemp
  • C# 中左移位的奇怪行为

    在测试这段代码时 for int i 0 i lt 32 i Console WriteLine i byte MaxValue 1 lt lt i 我得到这些输出 0 256 1 512 2 1024 3 2048 4 4096 5 81
  • 按住自定义 UIButton 时更改深灰色突出显示的颜色?

    我有一个习惯UIButton这是一个云 透明的黑白 png 文件 没有关闭状态 只有一张图像 当用手指轻敲并按住它时 它会变成深灰色 我正在尝试将深灰色改成不那么压抑的颜色 该按钮在视图中公开 而不是在选项卡栏 工具栏或导航控制器中 我已经
  • 如何将自定义文件导入 APK

    众所周知 apk 文件是一个 zip 格式的存档文件 包括以下文件和文件夹 AndroidManifest xml assets 类 dex META INF res 资源 arsc 我想要的是包含一个自定义文件 即 README txt
  • 创建一个人类可读的时间戳并存储在 C++ 中的字符串中

    我想根据程序运行的时间创建带有时间戳的文件名 即 logfile 2020 04 21 18 11 10 txt logfile 2020 04 22 18 13 43 txt 我可以得到时间戳 我认为 std chrono steady
  • 异步多线程异常处理?

    我希望在异步编程 beginInvoke endInvoke 中采用一种异常处理方法 其中如果任何一个线程 beginInvoke 失败 那么我希望所有其他异步处理线程停止工作 请提出一些解决方案 下面我还附上了我的示例代码 public
  • 如何与框架项目 swift 共享父(主机)项目 pod?

    我正在开发框架 我已将此框架项目添加到宿主项目中 现在我想将 cocoapods pod 框架 添加到父 主机 项目中 并将相同的 pod 共享到子 框架 项目中 或者我可以添加一些东西到 Podfile 中 它将与子项目共享 SwiftP
  • Report Builder 3.0 SWITCH 表达式 DEFAULT/ELSE

    我正在尝试根据用户的特许经营号码显示不同的徽标 参数 UserFranNr 如果值 99 且 87 则要显示的嵌入图像是 ID0 嵌入图像名称是字符串 这适用于嵌套 IIF 但似乎是使用正确的时间 地点SWITCH 未来很可能会有更多特许经
  • 无法登录 Magento 管理员

    我已将 magento 安装在子目录中 www domain com subdir magento 该网站一度运行得非常完美 我什么也没做 直到我的客户说他无法登录到 magento admin 我从我的电脑上登录得很好 但在他的电脑上 它
  • 使用 Delphi 以编程方式添加、删除文件并将文件提交到 Subversion 存储库中

    我想以编程方式检查文件是否已版本化 并使用 Delphi 添加 删除文件并将文件提交到 subversion 存储库中 有谁有示例代码可以帮助我创建必要的函数和过程 Thanks Steve Delphi XE 集成是开源的 基于 MPL
  • 我如何从左侧切换而不使用 jquery-ui

    如何在不使用 jquery ui 的情况下从左侧切换 JavaScript document ready function button click function content slideToggle HTML div This is
  • Javascript toFixed 不四舍五入

    我正在使用 javascript 绑定到一些复选框 并且toFixed 2 没有四舍五入 有什么想法为什么不四舍五入吗 例如 如果数字是859 385它只是显示859 38代替859 39 我还读到toFixed可以根据您使用的浏览器进行不
  • 消息中的换行符

    使用Google Apps脚本 如何在变量中换行以发送邮件 换行符在msgBox Browser msgBox line 1 n line 2 请注意 您需要使用额外的反斜杠转义 n
  • React Native 应用程序崩溃,没有任何错误日志

    React Native 应用程序崩溃 没有任何错误日志 没有输出 react native log android 终端 没有出现错误的红屏 Android 模拟器只是崩溃 尝试使用 Expo 运行 再次崩溃 没有错误 工作时发生Text
  • 滚动到 UWP 的 ListView 中的新项目

    我正在创建一个带有包含消息的 ListView 的聊天应用程序 当发送 接收新消息时 ListView 应滚动到新消息 我正在使用 MVVM 所以 ListView 看起来像
  • ASP.NET 正则表达式验证器(密码强度)

    我有一个具有以下表达式的验证控件 d 2 w 2 W 1 8 这是一个至少包含以下内容的密码2 digits 2 个字母字符 1 个非字母数字 and 最少 8 个字符 不幸的是 这似乎不兼容跨浏览器 此验证在 Firefox 中完美运行