【问题标题】:Regular expression to have at-least one alphabet, one number & one special character正则表达式至少有一个字母、一个数字和一个特殊字符
【发布时间】:2011-12-22 07:54:13
【问题描述】:

这是一个 JS 正则表达式,在任何字符串中至少有一个字母、一个数字和一个特殊字符。

var pattern = /^(?=.*?[a-z])(?=.*?\d)(?=.*?[!@#$%\^&*\(\)\-_+=;:'"\/\[\]{},.<>|`])/i
pattern.test("Test123!@#")

我们如何在 C# 中编写相同的正则表达式?

【问题讨论】:

  • 使用RegEx类怎么样?
  • 仅供参考,这是一个 JS 正则表达式,在任何字符串中至少有一个字母、一个数字和一个特殊字符。并感谢您帮助我用 C# 编写此代码。

标签: c# javascript regex


【解决方案1】:

应该这样做:

if (Regex.IsMatch("Test123!@#",
              @"^(?=.*?[a-z])(?=.*?\d)(?=.*?[!@#$%\^&*\(\)\-_+=;:'""\/\[\]{},.<>|`])", 
              RegexOptions.IgnoreCase))
{
    // do something
}

【讨论】:

  • 逐字字符串中的双引号字符需要加倍。
  • @Nailuj 我的坏 - " 应该是 "" 才能逃脱
  • @ChristianHayter 是的 - 不小心忽略了它,更新了代码,感谢您和 Nailuj 指出。
【解决方案2】:
Match match = Regex.Match("Test123!@#", @"/^(?=.*?[a-z])(?=.*?\d)(?=.*?[!@#$%\^&*\(\)\-_+=;:'""\/\[\]{},.<>|`])/i",
        RegexOptions.IgnoreCase);


if (match.Success)
{
    ...
}

【讨论】:

  • 您遇到什么错误?正则表达式是一个文档类:msdn.microsoft.com/en-us/library/…
  • 你试过自己编译吗?这是一个非常复杂的表达式,有很多特殊字符,所以你不能简单地将它放在一个正则表达式中(不,它对前面的 @ 没有帮助)。例如,一个错误是:错误 CS1056: Unexpected character '\'.
  • 逐字字符串中的双引号字符需要加倍。
  • 您是否有关于如何将其移植到 C# 的问题?或者如何确保在 C# 中正确解析带有特殊字符的正则表达式?你的问题似乎没有反映你想要什么。
  • 无论如何...我已经更新了答案...谢谢克里斯蒂安·海特!
猜你喜欢
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多