我能想到的唯一符合标题的正则表达式是
^(0|[1-9][0-9]*)$
我确信这是一个相对简单的正则表达式,但我觉得有更有效的编写方法,比如使用元字符。我错过了什么吗?
答案 0 :(得分:1)
我没有看到任何明显的改进。您可以使用\d
代替[0-9]
:
^(0|[1-9]\d*)$
但according to regex101,它不会带来任何速度提升('0'为6步,任何其他匹配为8步)。
如果你只是想展示你的正则表达式排字,那总是这样:
^(0|(?!0)\d+)$
它使用负前瞻'零或(不是零后跟数字)',但实际上更慢(任何非零匹配都是9步)。