如何在正则表达式中检测下划线?

Mih*_*nut 0 javascript regex expression

我有一个regex表达式来测试我的密码:至少一个数字,至少一个大写字母,至少一个低位字母和至少一个特殊字符.

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s])/
Run Code Online (Sandbox Code Playgroud)

但是下划线并不被认为是special character.

我怎样才能改善这个?

lil*_*zek 5

这里的问题是,对于JavaScript,\w代表:

[a-zA-Z0-9_]
Run Code Online (Sandbox Code Playgroud)

所以你是在_隐含地避免.

这部分正则表达式:

(?=.*?[^\w\s]) // Match special character
Run Code Online (Sandbox Code Playgroud)

相当于:

(?=.*?[^a-zA-Z0-9_\s])
Run Code Online (Sandbox Code Playgroud)

参考书目

\ w元字符用于查找单词字符.

单词字符是az,AZ,0-9中的字符,包括_(下划线)字符.

https://www.w3schools.com/jsref/jsref_regexp_wordchar.asp