Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript正则表达式中Unicode字符类的替换_Javascript_Java_Regex_Unicode - Fatal编程技术网

javascript正则表达式中Unicode字符类的替换

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

我有一个用于验证javascript应用程序中密码的正则表达式,如下所示:

/^(?=.[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语句或类似语句。