当前位置: 首页 > 知识库问答 >
问题:

默认android键盘布局(如日语和俄语键盘)的正则表达式密码验证问题

施晗日
2023-03-14

我用Regex验证了一个最少8个字符包含1个大写,1个小写,1个特殊字符,1个数值的密码。我遇到的问题是,如果来自俄罗斯或任何其他语言与英语不同的国家的人尝试使用默认键盘输入密码,会给他们造成问题。

目前,我已经为我的应用程序设置了这个正则表达式条件:

String regex = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$";

如果用户用英语设置密码,它会起作用。但是如果用户的语言不同,它就不起作用。(像Испытание@123这样的密码将失败)。我在谷歌上搜索了默认键盘的俄语正则表达式,并找到了俄语键盘的解决方案。

我需要为所有不同语言的密码验证正则表达式工作吗?

是否有替代解决方案,以便我可以使用所需的密码验证检查任何默认键盘布局的密码检查?

共有1个答案

周威
2023-03-14

您可以使用< code>\p{Ll}匹配任何Unicode小写字母,使用< code>\p{Lu}匹配任何Unicode大写字母:

String regex = "^(?=\\P{Lu}*\\p{Lu})(?=\\P{Ll}*\\p{Ll})(?=[^0-9]*[0-9])(?=[^#?!@$%^&*-]*[#?!@$%^&*-]).{8,}$";

请注意,前瞻中的 .*? 效率不高,我使用了反向模式\P{Lu} 匹配任何不是 Unicode 大写字母的字符,\P{Ll} 匹配 Unicode 小写字母以外的任何字符等)以符合对比原则。

如果您也需要支持任何Unicode数字,请将(? =[^0-9]*[0-9])替换为(?=\\P{Nd}*\\p{Nd})其中\P{Nd}匹配Unicode数字以外的任何字符,并且\p{Nd}匹配Unicode十进制数字以外的任何字符。

 类似资料:
  • Illustrator 提供了许多快捷键来帮助您更快地完成工作。当您将鼠标光标悬停在命令菜单中的图标上方时,会显示许多键盘快捷键。 注意: 以下列表包含最有用的快捷键。您可以在菜单命令和工具提示中找到其他快捷键。 您可以在 Illustrator 中自定义键盘快捷键。请参阅自定义键盘快捷键。 键盘快捷键速查表 下载并打印 Illustrator 的一些有用键盘快捷键的一页速查表,以便于参考。  

  • 我有以下密码验证规则: 至少8个字符 我试图找到这个规则的正则表达式模式,最接近的是: 但这并不适用于所有规则。 我对正则表达式是新手,如果有任何可以学习正则表达式的资源,我将不胜感激。

  • 本文向大家介绍最新密码验证正则表达式,包括了最新密码验证正则表达式的使用技巧和注意事项,需要的朋友参考一下 正则表达式验证密码功能在项目中经常被使用到,但是很多朋友还是不大会使用密码正则表达式进行验证,本文小编为大家整理了php密码验证正则表达式、python密码强度正则,当然还有大家常用到的js正则表达式,希望大家喜欢。 刚开始复习一下,什么是正则表达式? 在编写处理字符串的程序或网页时,经常有

  • 我需要检查密码是否至少包含: 一个号码 一个小写字符 一个大写字符 一个特殊符号(.,@etc) 我在C#中有以下内容: 但这并不有效: 我错过了什么? 更新 我正在将其与系统.组件模型.数据注释一起使用来验证模型属性:

  • 我试图建立一个注册表格使用角6反应形式。 } 我如何进行验证,以便允许: < li >数字 < li >大写字母 < li >小写字母 < li >任何特殊字符 < li >最少8个字符 我使用的这个正则表达式工作正常,但是我不能使用任何其他特殊字符,例如我尝试了< code>Demoo123#但是没有工作。然而< code>Demoo123@运行良好。我假设我的正则表达式中的特殊字符部分有问题。

  • 问题内容: 谁能帮助我创建用于密码验证的正则表达式。 条件为“密码必须包含8个字符和至少一个数字,一个字母和一个唯一字符,例如 问题答案: