.net 正则表达式^.*(?=.[\W]).*$不包括下划线

.net 正则表达式^.*(?=.[\W]).*$不包括下划线,.net,regex,vb.net,.net,Regex,Vb.net,我有一个正则表达式来匹配至少一个特殊字符、一个数字、一个大写字符和一个小写字符 ^.*(?=.*[\W]).*$ 但是上面的表达式不包括uz(下划线)。我通过使用 ^.*(?=.*[\W_]).*$ 但我不确定这个正则表达式将排除哪些其他特殊字符。另外,请让我知道[\W]为什么不包括下划线?。有什么想法吗 我在vb.net中使用这个表达式。因此,没有排除任何其他因素。这可能取决于语言/正则表达式的风格,但它基本上是标准的。因为\w匹配A-Za-z0-9和\u,所以\w(补充字符类)将排除上述

我有一个正则表达式来匹配至少一个特殊字符、一个数字、一个大写字符和一个小写字符

^.*(?=.*[\W]).*$
但是上面的表达式不包括uz(下划线)。我通过使用

^.*(?=.*[\W_]).*$
但我不确定这个正则表达式将排除哪些其他特殊字符。另外,请让我知道[\W]为什么不包括下划线?。有什么想法吗


我在vb.net中使用这个表达式。因此,没有排除任何其他因素。这可能取决于语言/正则表达式的风格,但它基本上是标准的。

因为
\w
匹配
A-Za-z0-9
\u
,所以
\w
(补充字符类)将排除上述字符。(假设正则表达式引擎没有用于
\w
)的Unicode扩展。
\w
/
\w
在不同实现中的行为有所不同。您可以包括您正在使用的语言吗?这似乎不是与\W vs\W相关的问题\w甚至没有选择特殊字符。字母可能包含Unicode字符-如果您正在使用带有Unicode扩展名的引擎(不确定此处的术语)来表示
\w
(例如.NET、Perl),则它似乎与\w vs\w无关\w甚至没有挑选特殊的角色。