【发布时间】:2014-04-16 16:13:40
【问题描述】:
我搜索了 SO 和 Google,我发现的大多数示例似乎都没有按预期工作(或者没有结合所有这些元素)。我正在尝试创建一个匹配(通过)的正则表达式,如果字符串在字符串中包含 至少 以下 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";
}
问题是这没有按预期工作。以下Pass应该Fail(它们没有特殊字符):
- 123牛仔
- MonkeyCow123
它似乎可以很好地检测除特殊字符之外的所有字符。我做错了什么以及如何解决?
【问题讨论】: