我能想到的唯一满足标题的正则表达式是
^(0|[1-9][0-9]*)$
我确信这是一个相对简单的正则表达式,但我感觉有更有效的方法来写它,比如使用元字符。我错过什么了吗?
我没有看到任何明显的改进。您可以使用d
代替[0-9]
:
^(0|[1-9]d*)$
但是根据regex101,它不会导致任何速度提高('0'的6步,任何其他匹配的8步)。
如果你只是想炫耀你的正则表达式,总是有这个:
^(0|(?!0)d+)$
它使用负向前看' 0或(不是零后面跟着数字)',但这实际上更慢(9步对于任何非零匹配)。