2015-04-23 51 views

回答

1

當您設置一個模式裏面的條件,不要忘了實際消耗的字符,添加.+捕捉到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'匹配'_'。 –

相關問題