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

Alf*_*asa 15 regex

我有一个使用.NET创建的文本框..

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

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

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

我已经尝试过你们所有人建议的所有答案.但还是行不通.这不是我不读你所有的答案.

这是图片..

在此输入图像描述

我想在第一次验证,用户只能键入数字,但以非0或字母但1-9的值开头.在第一个字符之后,用户只能键入0-9.

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

reg = new System.Text.RegularExpressions.Regex("^[^0-9]");
Run Code Online (Sandbox Code Playgroud)

正则表达式只接受0到9之间的数字.

reg = new System.Text.RegularExpressions.Regex("^[^1-9]");
Run Code Online (Sandbox Code Playgroud)

正则表达式只接受1到9之间的数字.

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

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

还有其他办法吗?谢谢.

pax*_*blo 26

如果您正在寻找价格之类的东西,您需要考虑这0.99可能是完全有效的.对于这样的事情,我只想用一个不复杂的开始^[0-9]*(\.[0-9]{0,2})?$(又可能是边缘的情况下,可能使之更加复杂,如小数点后三位数字等),并允许前导零,因为它们不"伤害"无论如何,这个价值.

必须以非零开始,只需将初始值更改[0-9]*为a [1-9][0-9]*.仅对于整数(似乎由您添加的样本数据表示),那将是:

^[1-9][0-9]*$
Run Code Online (Sandbox Code Playgroud)


per*_*eal 13

要匹配以任何数字开头但以零为单位的数字:

^[1-9][0-9]*$
Run Code Online (Sandbox Code Playgroud)

如果你想匹配0:

^([1-9][0-9]*)|([0]+)$
Run Code Online (Sandbox Code Playgroud)

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

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

^[1-9a-zA-Z][0-9a-zA-Z]*$
Run Code Online (Sandbox Code Playgroud)