【发布时间】:2021-01-13 05:21:26
【问题描述】:
我正在使用正则表达式来验证密码
这是我的正则表达式配置
@"^(?!.*[\s])(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,32}$"
我的标准是
- 密码必须至少包含一个大写字母、一个小写字母和一个数字;
- 不能有任何特殊字符、重音或空格;
- 此外,密码长度可以为 6 到 32 个字符。
我正在等待的测试:
- BIT123456 无效
- 2021 年有效
Fing!2020 Is Invalid ( but it returns valid )
我检查错误的代码:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
var totalTestCases = int.Parse(Console.ReadLine());
string S = "";
string pattern = @"^(?!.*[\s])(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,32}$";
var n = 0;
do
{
n++;
S = Console.ReadLine();
if (S != "")
{
// Console.WriteLine("{0}", Regex.IsMatch(S, pattern) ? "Senha valida." : "Senha invalida.");
string test = Regex.IsMatch(S, pattern) ? "Password valid." : "Password invalid.";
Console.WriteLine(test);
}
} while (n < totalTestCases);
}
}
【问题讨论】:
-
除非您正在为现有系统进行开发,否则从安全角度来看,不允许密码中包含特殊字符是不明智的。
-
这不是为了一个系统,而是为了研究验证如何工作@John