2016-07-01 40 views
0

,我能想到的唯一的正则表达式满足标题最佳的正则表达式是代表非负整数,没有前导零除零本身

^(0|[1-9][0-9]*)$ 

我敢肯定,这是一个相对简单的正则表达式,但我感觉有更有效的写法,比如使用元字符。我错过了什么?

+0

如果您使用的是编程语言,使用简单的变量比较来执行此检查会容易得多。顺便说一下,你的正则表达式看起来不对。 –

+1

@TimBiegeleisen,正则表达式很好 - 事实上,没有任何有意义的方法来改进它。这是最基本的。 –

+1

@AlanMoore对不起,我错过了'除零自身之外没有前导零'这个词,因此我在寻找一个负面的前瞻。 –

回答

1

我没有看到任何明显的改进。您可以在场所使用\d[0-9]

^(0|[1-9]\d*)$ 

according to regex101,它不会导致任何的速度提高(6个步骤为“0”,8个步骤用于任何其它比赛)。

如果你只是想炫耀您正则表达式的印章,总是有这样的:

^(0|(?!0)\d+)$ 

它使用负先行“零或(不是零后跟数字)”,但实际上更慢(9个步骤对于任何非零比赛)。