Skip to main content
 首页 » 编程设计

c#之将多个正则表达式模式作为 C# 中的属性放入一个模式中

2024年02月13日28xing901022

我有以下正则表达式来验证密码是否包含至少一个大写字母、至少一个小写字母和至少一个数字。

Regex rxLowercase = new Regex( @"\p{Ll}" ); // Unicode: All lowercase letters 
Regex rxUppercase = new Regex( @"\p{Lu}" ); // Unicode: All uppercase letters 
Regex rxDigits = new Regex( @"\p{Nd}" ); // Unicode: All decimal digits 

我想把一个属性放到一个特定的属性上,比如

[RegularExpression( /* something here which combines above expressions */ )] 
[StringLength( 1024, MinimumLength = 8 )] 
public string NewPassword 
{ 
    get; 
    set; 
} 

如何实现?

请您参考如下方法:

由于您的正则表达式都是从字符串初始化的,只需让 RegularExpression 属性的构造函数接受一个字符串数组即可。

我建议将 NewPassword 更改为一个方法(你永远不应该实现密码,这样你就可以获取值、散列它们并比较散列以找出密码是否匹配)。

然后要从方法中获取属性,请使用类似的东西:

var attribute = (RegularExpression)typeof(YourClass).GetMethod("NewPassword") 
    .GetCustomAttributes(typeof(RegularExpression), false).First();