javascript正则表达式中Unicode字符类的替换
我有一个用于验证javascript应用程序中密码的正则表达式,如下所示:javascript正则表达式中Unicode字符类的替换,javascript,java,regex,unicode,Javascript,Java,Regex,Unicode,我有一个用于验证javascript应用程序中密码的正则表达式,如下所示: /^(?=.[a-z])(?=.[a-z])(?=..*\d)(?=.[!@$^.*.[!@$^.*())[a-zA-z\d!@$^.*.*.[[a-z]){8,64}$/gm 这基本上接受至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符的密码,以及长度在8到64个字符之间的密码 我希望使用 如何将这个JS正则表达式转换为java等价物 注:这里提供了一个弱密码的js正则表达式的翻译,以供参考 不带unicod
/^(?=.[a-z])(?=.[a-z])(?=..*\d)(?=.[!@$^.*.[!@$^.*())[a-zA-z\d!@$^.*.*.[[a-z]){8,64}$/gm
这基本上接受至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符的密码,以及长度在8到64个字符之间的密码
我希望使用
如何将这个JS正则表达式转换为java等价物
注:这里提供了一个弱密码的js正则表达式的翻译,以供参考
不带unicode类的JS正则表达式:
/^(?=.[a-z])(?=.[a-z])(?=.*\d)[a-zA-z\d!@#$^.*(){8,64}$/gm
使用Unicode类翻译的正则表达式:
^(?=.\\p{Ll})(?=.\\p{Lu})(?=.\\p{N})[\\p{L}\\p{N}]*
这应该有效
^(?=.*\\p{Ll})(?=.*\\p{Lu})(?=.*\\p{N})(?:(?=.*\\p{P})|((?=.*\\p{S})))[\\p{L}\\p{N}\\p{P}\\p{S}]{8,64}$
这应该行得通
^(?=.*\\p{Ll})(?=.*\\p{Lu})(?=.*\\p{N})(?:(?=.*\\p{P})|((?=.*\\p{S})))[\\p{L}\\p{N}\\p{P}\\p{S}]{8,64}$
那个正则表达式太可怕了!当然,最好使用普通Java代码;i、 e.迭代字符串并计算每个指定字符类中的字符数。@StephenC我也有同感,但在这里使用Unicode字符类常量会很简洁,因为实际区分大小写会是一场噩梦,所有可能语言的特殊字符,方法是枚举可能属于这两类中任何一类的所有可能字符。有一种方法可以测试字符是否属于给定的Unicode字符类。您不需要将字符测试编码为一个可怕的switch语句或类似的语句。这个正则表达式太可怕了!当然,最好使用普通Java代码;i、 e.迭代字符串并计算每个指定字符类中的字符数。@StephenC我也有同感,但在这里使用Unicode字符类常量会很简洁,因为实际区分大小写会是一场噩梦,所有可能语言的特殊字符,方法是枚举可能属于这两类中任何一类的所有可能字符。有一种方法可以测试字符是否属于给定的Unicode字符类。您不需要将字符测试编码为异常的switch语句或类似语句。