任何大于0的数的正则expression式?
将validation应用于MVC中的模型,并希望使用正则expression式。
试图validation我的模型上的ID在提交时大于0。
我不熟悉正则expression式…有人可以帮我吗?
谢谢
我不知道MVC是如何相关的,但是如果你的ID是一个整数,这个BRE应该:
^[1-9][0-9]*$
如果要匹配实数(浮点数)而不是整数,则需要处理上面的情况,以及正常的十进制数(即2.5
或3.3̅
),模式在0和1之间(即0.25
)的情况,以及你的模式有一个小数部分是0的情况(即2.0
)。 而我们在这个时候,我们将添加对整数(即005
)前导零的支持:
^(0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*)$
请注意,这第二个是一个扩展的RE。 基本可再生能源能够expression同样的东西,但是现在几乎所有的东西都可以理解能源环境。 让我们把expression式分解成更容易消化的部分。
^(
脱字符与行开头的null相匹配,所以在你的正则expression式之前加上一个脱字符将它定位到行首。 下面的“or-bar”是左括号。 稍后更多。
0*[1-9][0-9]*(\.[0-9]+)?
这匹配任何整数或 1以上的任何浮点数。所以我们的2.0
将匹配,但0.25
不会。 在开始的0*
处理前导零,所以005 == 5
。
|
pipe道字符在这种情况下是一个“ or-bar ”。 为了评估这个expression式,它具有比其他所有更高的优先级,并有效地将两个正则expression式连接在一起。 圆括号用于分组由or-bar分隔的多个expression式。
第二部分:
0+\.[0-9]*[1-9][0-9]*
这匹配任何以一个或多个0
字符开始的数字(用*
replace+
以匹配零个或多个零,即.25
),后跟一个句点,后跟一个包含至less一个不为0
的数字的string。 所以这匹配0
以上和1
以下的所有东西。
)$
最后,我们closures括号并将正则expression式与美元符号一起锚定到行的末尾,就像插入符号位于行首一样。
当然,如果你让你的编程语言以数字的方式来评估某些东西,而不是试着用一个正则expression式来匹配它,那么你将会节省头疼和 CPU。
这个怎么样: ^[1-9][0-9]*$
码:
^([0-9]*[1-9][0-9]*(\.[0-9]+)?|[0]+\.[0-9]*[1-9][0-9]*)$
例如: http : //regexr.com/3anf5
参考: https : //social.msdn.microsoft.com/Forums/en-US/17089c0f-f9cb-437a-9667-ba8329681624/regular-expression-number-greater-than-0?forum=regexp
你去那里:
MatchCollection myMatches = Regex.Matches(yourstring, @"[1-9][0-9]*");
提交时间:
if(myMatches.Count > 0) { //do whatever you want }
我试过这一个,它为我所有的十进制/整数大于零
允许空格: ^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$
没有空格: ^(?=.*[1-9])\d*(?:\.\d{1,2})?$
参考:正则expression式大于零,小数点后两位
如果您只想要非负整数,请尝试: ^\d+$
我认为最好的解决scheme是在正则expression式的两个括号之间添加+符号:
^[1-9]+[0-9]*$
你可以使用下面的expression式:
(^\d*\.?\d*[1-9]+\d*$)|(^[1-9]+\.?\d*$)
有效条目:1 1. 1.1 1.0所有正实数
无效的项目:所有负实数和0和0.0
简单的答案是: ^[1-9][0-9]*$
我认为这将是完美的工作:
([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])
有效:
1 1.2 1.02 0.1 0.02
无效 :
0 01 01.2 1.10
[1-9]\.\d{1,2}|0\.((0?[1-9])|([1-9]0?)){1,2}\b
^ \ $?([1-9] {1} [0-9] {0,2}(\,[0-9] {3})*([0-9] {0,2})? | [1-9] {1} [0-9] {0,}([0-9] {0,2})|≠0([0-9] {0,2})|?( 。[0-9] {1,2})?)$
很简单的回答这个使用:\ d *