我已经搜索过 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/