正则表达式将单词与数字匹配,但如果它只是数字则不匹配

Regex to match a word with numbers but not if it's numbers only

我想匹配一个可能包含数字但不是纯数字的单词。

例如:

Menial = 匹配

John124 = 匹配

V4n3ss4 = 匹配

0livia = 匹配

3715 = 不匹配

我试过 \w* 但令人惊讶的是,这需要一个普通数字作为一个词。我还尝试了 \b 的其他模式,但我注意到,出于某种原因,单个数字也被认为是 "word boundary".

强制将字母放在匹配中间某处的一种方法是将 [A-Za-z] 放在 \w* 表达式之间,如下所示:

\b\w*[A-Za-z]\w*\b
两端的

\bs 确保匹配位于单词边界。

Demo.

尝试:\w*[a-zA-Z]\w*

这本质上是"At least one non-digit character surrounded by any number of alphanumeric characters"