【发布时间】:2021-07-19 13:38:23
【问题描述】:
需要正则表达式来检查密码策略
我有一个模型:
"password_settings": {
"enable_password_max_length": false,
"enable_password_min_length": false,
"enable_min_number_of_upper": false,
"enable_min_number_of_lower": false,
"enable_min_number_of_numbers": false,
"enable_min_number_of_special_characters": false,
"password_max_length_value": 24,
"password_min_length_value": 1,
"min_number_of_upper_value": 1,
"min_number_of_lower_value": 0,
"min_num_of_numbers_value": 1,
"min_number_of_special_characters_value": 1
},
如果某些标志为“真”,我需要动态创建正则表达式。
例如:
enable_min_number_of_numbers= true
enable_min_number_of_upper = true
min_num_of_numbers_value= 3
min_number_of_upper_value = 2
正则表达式字符串将是
^(?=.*[A-Z]).{"min_number_of_upper_value",}(?=.*\d).{"min_num_of_numbers_value",}$
但它对我不起作用。
我需要什么: 请帮助我创建正则表达式,我可以在其中禁用或启用正则表达式的某些部分以及我可以从我的 json 设置计数的位置。
谢谢。
【问题讨论】:
-
这看起来像一个 JSON 字符串。最好使用 json 解析器。
-
将您的 json 复制到任何为您生成类的工具中 stackoverflow.com/questions/21611674/…。只需
var my_object = JsonConvert.DeserializeObject<MyAutoGeneratedClass>(jsonText),瞧,您的对象中就会填充您的所有数据。 -
它将是
var pattern = $@"^(?=(?:[^A-Z]*[A-Z]){{{min_number_of_upper_value}}})(?=(?:\D*\d){{{min_num_of_numbers_value}}})"; -
为什么要在一个正则表达式中完成整个逻辑? “始终进行规划,以便您可以为继任者提供家庭住址”
标签: c# regex regex-lookarounds