asp.net - 如何使用正则表达式处理用于密码验证的拉丁字符?
问题描述
我正在编写密码验证代码,它应该有一个大写字母、一个小写字母、一个数字和一个给定集合中的特殊字符。我为此写了正则表达式。我不知道如何处理像“ÏÐÑÜÝÞßàáââ”这样的拉丁字符。这些拉丁字符是否将计入大写或小写或特殊字符。
public const string NAME_REGEX = @"^[\da-zA-Z-+_*&=^%$#@(){}~!]{8,12}$";
解决方案
你有两个选择,
1.您可以将拉丁字符视为英文字符,并将您的小写字母定义为this [a-zà-ÿ]
,大写字母定义为this [A-ZÀ-ß]
。在这种情况下,英语或拉丁字符的存在将被计入正则表达式,并且根据您的密码规则,您的正则表达式可以这样写,
^(?=.*[a-zà-ÿ])(?=.*[A-ZÀ-ß])(?=.*\d)(?=.*[!@#$])[a-zà-ÿA-ZÀ-ß\d!@#$]{8,12}$
请注意,我已将密码中允许的字符限制为此字符集[a-zà-ÿA-ZÀ-ß\d!@#$]
,您可以增强并允许更多字符,或者只写.
允许任何内容。
2.在第二种情况下,您可能不想在密码强制条件中考虑拉丁字符,因此您可以从前瞻表达式中的字符集中取出这些拉丁字符。你的正则表达式变成了这个,
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$])[a-zà-ÿA-ZÀ-ß\d!@#$]{8,12}$
如您所见,您仍然可以在密码中允许的字符中允许拉丁字符,但它不再参与密码中必须存在至少一个小写/大写字符才能有效的情况。
让我知道这是否有帮助,如果有任何疑问,请告诉我。
推荐阅读
- single-sign-on - 使用密钥斗篷 SAML 的 SSO
- azure - Azure AD 设置的 Azure REST API
- java - Android:如何在导入 FAT JAR 时排除重复的类?
- android - Android 上的 YouTube iFrame API(带有 WebView) - 无法构建播放器时是否有回调?
- javascript - 根据从 SQL Server 数据库中获取的选项,在下面选择隐藏/显示 Div
- python - 获取预测值的百分比
- c# - 有没有一种可靠的方法可以在不使用 Cancel 的情况下停止线程?
- r - 如何生成对应多列的变量?
- javascript - 修剪标题和摘录组合的总字符值
- java - 在 null 中定义的 bean 'postRepository' 无法注册。具有该名称的 bean 已在 null 中定义