提问者:小点点

正则表达式仅接受数字。第一个字符不能为0


我有一个文本框,我创建使用。NET…

通过使用该文本框,用户只能键入数字。但不能以0开头。从1-9开始。在用户在第一个字符的1-9中键入后,用户可以键入0。

Regex reg = null;
reg = new System.Text.RegularExpressions.Regex("^[1-9][0-9]*$")
return reg.IsMatch(str);

这是我的正则表达式。通过使用它,我不能键入1-9。但只有0和字母。但是如果我使用^[1-9],我可以键入数字,但不能键入0。

我已经尝试了你们所有人建议的所有答案。但是仍然不起作用。我又不是没有读过你所有的答案。

这里是图片…

我想第一次验证,用户只能键入数字,但从不是0或字母而是1-9的值开始。在第一个字符之后,用户只能键入0-9。

我确实使用Int. TryParse,但我在按下按钮处理后使用它。

reg = new System.Text.RegularExpressions.Regex("^[^0-9]");

该正则表达式仅接受从0到9的数字。

reg = new System.Text.RegularExpressions.Regex("^[^1-9]");

该正则表达式仅接受从1到9的数字。

如何为第二个字符添加更多表达式到正则表达式,直到只接受数字0-9的其余部分?

顺便说一下,我不在乎0.99,因为在这里,价格是固定的。不是0.99或0.123…

还有别的办法吗?谢谢。


共3个答案

匿名用户

如果你在看价格之类的东西,你需要考虑0.99可能是完全有效的。对于这样的事情,我只是从一个不复杂的^[0-9]*(\.[ 0-9]{0,2})? $开始(同样,可能会有边缘情况,可能会使它更复杂,比如小数点后的三位数字等等)并允许前导零,因为它们无论如何都不会“损坏”值。

它必须以非零开头,只需将初始[0-9]*更改为[1-9][0-9]*。仅对于整数(似乎从您添加的示例数据中可以看出),即:

^[1-9][0-9]*$

匿名用户

要匹配以除零之外的任何数字开头的数字:

^[1-9][0-9]*$

如果你也想匹配0:

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

如果您只想要一个零,请删除最后一个加号

要允许第一个非零之后的任何字母数字:

^[1-9a-zA-Z][0-9a-zA-Z]*$

匿名用户

这是最适合我的:

^(?!(0))[0-9]+$