所以我试图匹配一个(任何)单词:
- 至少一个大写字母
- 至少一个小写字母
- 至少一个数字
我目前使用前瞻来实现这一点
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$
但我无法将其匹配到一个单词。我尝试在前瞻中使用 \b
但它不起作用。我试图匹配的单词可以以任何顺序具有上述条件。示例:aB5 OR Ba5 OR 5Ba 等。需要一些指示。
最佳答案
主要问题是 .
包含空格。您需要将 .
更改为仅限单词字符,即 \w
。请注意,\w
(大部分)是[A-Za-z0-9_]
,如果您希望排除其中一些或包含更多内容,您应该进行适当的更改.
另一件事是,如果您要在字符串中查找单词,则需要删除 ^
和 $
因为它们分别表示字符串的开头和结尾.
由于您的所有要求都是“至少”(而不是“最多”),因此您实际上并不需要 \b
因为匹配是从左到右发生的,因此您可以永远不会得到单词的一部分。
正则表达式:
(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w+
Test .
关于句子中某个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213571/