2013-11-25 80 views
0

尝试允许从20以上到1000或10000的正整数的正则表达式。应该允许使用0到19,也不允许使用小数,负数和字母允许。正则表达式,只允许20以上的正整数

我正在尝试,但没有得到它。

r"[+-]?(?<!\.)\b[0-9]+\b(?!\.[0-9])" 

[更新]不想包括从0到19

+1

为什么这个正则表达式? – anubhava

+5

“允许20 - 1000的数字”。 “也允许0-19”。咦? – h2ooooooo

+0

@ h2ooooooo我猜OP的意思是写“0至19应该*不允许”,因为他然后继续列出3个“也”不应该被允许的事情。 –

回答

1

尝试是这样的:

[2-9][0-9]|[1-9][0-9]{2,} 

这将匹配大于等于一个双位数字到20,或三位或更多位的数字。这依赖于你如何使用它,你可能需要将启动(^)和结束($)锚周围的模式在输入禁止任何额外的字符:

^([2-9][0-9]|[1-9][0-9]{2,})$ 

如果你想限制这种为数字高达1000:

^([2-9][0-9]|[1-9][0-9]{2}|1000)$ 

如果你想这个限制人数达到10000:

^([2-9][0-9]|[1-9][0-9]{2,3}|10000)$ 
+0

Perfect @ p.s.w.g非常感谢。 – Matthew

+0

这将匹配大于1000的数字虽然 –

+0

@RyanSaxe我认为OP只是意味着它应该匹配任意大的数字,但这是一个很好的观点。我也包括这些情况的替代方案。 –

相关问题