c# - 检查字符串是否至少包含每个 : lowercase letter, 大写字母、数字和特殊字符之一

标签 c# asp.net regex

我已经搜索过 SO 和 Google,我发现的大多数示例似乎都没有按预期工作(或者没有结合所有这些元素)。我正在尝试创建一个 Regex 表达式,如果字符串包含 至少 字符串中的以下 anywhere 之一,则匹配(通过),如果缺少任何一个,则失败他们:

  • 长度至少为 8 个字符
  • 大写字符
  • 小写字符
  • 人数
  • 特殊字符(包括句点、下划线等,即白名单方法不可取 - 允许任何非字母数字字符)

这是我试过的:

if (System.Text.RegularExpressions.Regex.IsMatch(txtTest.Text.Trim(), "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?^[a-zA-Z0-9_@.-]).{8,}$"))
{
    lblMsg.Text = "Pass";
}
else
{
    lblMsg.Text = "Fail";
}

问题是这没有按预期工作。以下在它们应该失败通过(它们没有特殊字符):

  • 123牛仔
  • MonkeyCow123

它似乎可以很好地检测除特殊字符以外的所有字符。我做错了什么,我该如何解决?

最佳答案

(?=.*?^[a-zA-Z0-9_@.-]) 更改为以下代码:

       + see here
(?=.*?[^a-zA-Z0-9_@.-])
                 ^^ i kept the dot, hyphen, etc as you used, if you don't need, remove.

在这个正则表达式中,字符类 [] 中的 ^ 否定字符。你快到了,只是不幸的是你把它放在了 []

之外

关于c# - 检查字符串是否至少包含每个 : lowercase letter, 大写字母、数字和特殊字符之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114797/

相关文章:

c# - "EndResponse"能否提高 ASP.Net 页面的性能

c# - webmatrix c# 和 Razor

c# - Application_AuthenticateRequest 和 FormsAuthentication_OnAuthenticate 有什么区别

javascript - 如何构建正则表达式以匹配引号中的字符串?

javascript - TotalVowels 变量未更新

c# - Azure 页面分页的总记录数

c# - 将变体数组从 Excel VBA 传递到 WCF 函数

javascript - 使用正则表达式从文本中获取字符串

c# - 表中有更多属性会降低性能吗?

c# - 如何重构 ASP.NET 应用程序