所以我试图匹配一个(任何)单词:
- 至少有一个大写字母
- 至少一个小写字母
- 至少一个数字
我目前使用前瞻来解决这个问题
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$
但我无法用一个词来匹配它。我尝试使用\b
前瞻,但它不起作用。我试图匹配的单词可以以任何顺序具有上述条件。示例:aB5 OR Ba5 OR 5Ba 等。需要一些指针。
所以我试图匹配一个(任何)单词:
我目前使用前瞻来解决这个问题
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$
但我无法用一个词来匹配它。我尝试使用\b
前瞻,但它不起作用。我试图匹配的单词可以以任何顺序具有上述条件。示例:aB5 OR Ba5 OR 5Ba 等。需要一些指针。
主要问题是.
包括空格。您需要将.
's 更改为仅限于单词字符,即\w
. 请注意\w
(大多数情况下)[A-Za-z0-9_]
,如果您希望排除其中一些或包含更多,您应该进行适当的更改。
另一件事是,如果您要在字符串中查找单词,则需要删除^
and$
因为它们分别表示字符串的开头和结尾。
由于您的所有要求都是“至少”(与“最多”相反),因此您并不真正需要\b
,因为匹配是从左到右进行的,因此您永远无法获得单词的一部分。
正则表达式:
(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w+
测试。
我目前使用前瞻来解决这个问题
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$
但我无法用一个词来匹配它。
前瞻是正确的方法,但是如果您只想查找单个单词,则不能允许.
中间的每个字符( ),而只能允许单词字符(如\w
)。所以
/(?=\w*\d)(?=\w*[a-z])(?=.\w[A-Z])\w+/g
应该这样做。当然,您可以自由地允许更多的字母\w
,甚至可能\S
。