2012-01-31 94 views
1

正则表达式不允许零正则表达式不允许零

它应该允许0.0000001作为值,但不应该允许进入0

我需要验证JavaScript不

+4

如何只确认它是一个数字,然后做'VAL!= 0'? – 2012-01-31 14:26:01

+0

我treid rangevalidator和regularexpression验证初始值= 0,但它不适合我 – 2012-01-31 14:27:48

+0

@Marc B - 我不想使用那个JavaScript,我可以做我需要做这个与asp.net验证程序 – 2012-01-31 14:28:39

回答

3

我认为,所有你需要的是这个

但是,你可以如果它在小数点前面,那么就只有一个前导零。
^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
    ValidationExpression="^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$"></asp:RegularExpressionValidator> 
<asp:Button ID="Button1" runat="server" Text="Button" /> 
+0

这也匹配字符串结束的这样的情况可以通过使用以下方法来解决:'^(?=。* [1-9])\ d * \。?\ d + $' – mantish 2016-12-14 10:53:59

+0

@mantish - 这个幻想的整个想法正则表达式是为了允许有效的数字。剩下的只是零而已。实际上'(?:\ d +(?:\。\ d *)?| \。\ d +)'是验证数字的唯一方法。 – sln 2016-12-31 19:49:10

1

那样的正则表达式?

 ([1-9](\.[0-9]+)?)|(0\.[0-9]*[1-9]) 

看起来像工作;-)

,如果你删除它看起来更容易理解的括号:

 [1-9](\.[0-9]+)? | 0\.[0-9]*[1-9] 
+0

的帮助不工作0.0000001在正则表达式验证 – 2012-01-31 15:07:49

+0

试图在这里: http://www.sweeting.org/mark/html/revalid.php 和工作,使用上版本括号 – mikus 2012-01-31 15:09:17

+0

我的意思是括号 – mikus 2012-01-31 16:26:56