查找字符串的正则表达式包含同时包含字母和数字的单词

regex to find a string contains words with both letters and digits

我正在尝试编写一个正则表达式来查找包含同时包含字母和数字的单词的字符串(不是字母数字检查,因为单词应该严格包含字母和数字)。

我想到了这个 ^(?=.*[a-zA-Z])(?=.*[0-9])

这是上述正则表达式的 link:https://regex101.com/r/Y97ykL/1

上面的正则表达式适用于像下面这样的简单场景

  1. a1b4cc -> true(包含字母和数字)

  2. abc -> false(仅包含字母)

  3. 123 -> false(仅包含数字)

但是有一些场景我无法用上面的正则表达式覆盖。 我怎样才能更新我上面的正则表达式以也适用于下面的例子?

  1. abc d77hv -> True(因为 efg123 包含字母和数字)

  2. 798 h7ghd -> 真(因为 h7ghd 包含字母和数字)

  3. 798 abcd -> False(因为没有包含字母和数字的单词)

我不太熟悉正则表达式,但是否可以编写一个正则表达式来检查上述场景,而无需遍历字符串中的每个单词? 感谢您的帮助!

试着在一行中找到一个字母和一个数字,或者一个数字和一个字母。

^((.*[0-9]+)[a-zA-Z]+.*)|((.*[a-zA-Z]+)[0-9]+.*)$

查看示例:https://regex101.com/r/Y97ykL/3

正则表达式 ^(?=.*\b(?=\S*[a-zA-Z])(?=\S*[0-9])) 可以正常工作。它试图找到(通过前瞻)一个词边界(\b),之后可以找到所请求的字母和数字的混合。

因为原始正则表达式也只匹配行首的零个字符,所以此正则表达式的行为方式相同。