首页 > 解决方案 > 如何使用正则表达式处理用于密码验证的拉丁字符?

问题描述

我正在编写密码验证代码,它应该有一个大写字母、一个小写字母、一个数字和一个给定集合中的特殊字符。我为此写了正则表达式。我不知道如何处理像“ÏÐÑÜÝÞßàáââ”这样的拉丁字符。这些拉丁字符是否将计入大写或小写或特殊字符。

  public const string NAME_REGEX = @"^[\da-zA-Z-+_*&=^%$#@(){}~!]{8,12}$";

标签: asp.netregex

解决方案


你有两个选择,

1.您可以将拉丁字符视为英文字符,并将您的小写字母定义为this [a-zà-ÿ],大写字母定义为this [A-ZÀ-ß]。在这种情况下,英语或拉丁字符的存在将被计入正则表达式,并且根据您的密码规则,您的正则表达式可以这样写,

^(?=.*[a-zà-ÿ])(?=.*[A-ZÀ-ß])(?=.*\d)(?=.*[!@#$])[a-zà-ÿA-ZÀ-ß\d!@#$]{8,12}$

演示1

请注意,我已将密码中允许的字符限制为此字符集[a-zà-ÿA-ZÀ-ß\d!@#$],您可以增强并允许更多字符,或者只写.允许任何内容。

2.在第二种情况下,您可能不想在密码强制条件中考虑拉丁字符,因此您可以从前瞻表达式中的字符集中取出这些拉丁字符。你的正则表达式变成了这个,

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$])[a-zà-ÿA-ZÀ-ß\d!@#$]{8,12}$

演示2

如您所见,您仍然可以在密码中允许的字符中允许拉丁字符,但它不再参与密码中必须存在至少一个小写/大写字符才能有效的情况。

让我知道这是否有帮助,如果有任何疑问,请告诉我。


推荐阅读