如果前导数字根本不匹配

Do not match at all if leading numbers

我创建了一个小的 RegEx 以在字符串中查找一些变量名:

([a-zA-Z][a-zA-Z0-9_]+)

在我的例子中,变量可以有整数和字母 + 下划线字符,但它不应该以数字开头。

问题是在这个字符串中:

"whateverTextBefore,246myVariableName25"

它将匹配myVariableName25,保留之前的246。我不想完全匹配这个。

我也试过这个模式:

([^0-9]*[a-zA-Z][a-zA-Z0-9_]+)

要指定没有前导数字,但我得到相同的结果。

那么,如果有前导数字,我怎样才能使这个 RegEx 工作以完全拒绝匹配?

注意例子中前面是逗号,但也可以是任意特定字符,其中:

,.<>/?:;'"[]{})(-+=

您可以使用 word boundary \b.

\b([a-zA-Z][a-zA-Z0-9_]+)\b

Demo

此外,请注意 [a-zA-Z0-9_] 可以替换为 \w

\b([a-zA-Z]\w+)\b

Demo

要允许单个字母表,+ 量词可以替换为 *

\b([a-zA-Z]\w*)\b
             ^

用这个!

/\b([^,0-9]\w*?)\b/g

演示:https://regex101.com/r/eU4nP1/1

不要忘记 g 修饰符,这样它会匹配多个结果。每种语言都有不同的添加修饰符的方法。这是 PHP.

不要忘记排除 , 否则它将包含在结果中。