允许下划线“_”作为一个特殊的字符

问题描述:

这是表达,它不接受“_”作为一个特殊的字符允许下划线“_”作为一个特殊的字符

{(?=.{8,})(?=(.*\d){0,})(?=(.*\W){1,})} 
+2

你可能想解释你想做什么:) – Luaan

+0

上面的表达式接受至少一个特殊字符,除了“_”我想这应该被允许。 – user2078643

当您设置一个模式里面的条件,不要忘了实际消耗的字符,添加.+捕捉到1个或多个符号,或者.*捕捉到0个或多个字符:

{(?=.{8,})(?=(.*\d){0,})(?=(.*[^a-zA-Z0-9]){1,}).+} 

不过,如果你想要求一个字符串至少有1位和至少1个非字符号(不包括下划线),我建议使用

{(?=.{8,})(?=(?:.*\d){0,})(?=(?:.*[^a-zA-Z0-9]){1,}).+} 

请参阅demo

+0

非常感谢, 但我担心的是它不接受“_”作为一个特殊字符,它接受作为一个正常字符。 正如我们所知,我们广泛使用下划线作为特殊字符 – user2078643

+0

然而,'\ w'会将'_'视为字母数字字符,并与A-Za-z0-9一起使用。 – Docteur

+0

@Docteur:你能解释一下吗? '.'会匹配'_',我的模式中没有'\ w'。是的,'\ w'匹配'_'。 –