我有一个使用. 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数字。
我如何添加更多的表达式到regex的第二个字符,直到其余的只接受数字0-9?
顺便说一句,我不关心0.99,因为在这里,价格是固定的。
还有别的办法吗?谢谢。
6条答案
按热度按时间sf6xfgos1#
如果你在看价格之类的东西,你需要考虑
0.99
可能是完全有效的。对于这样的东西,我会简单地从一个不复杂的^[0-9]*(\.[0-9]{0,2})?$
开始(同样,可能有一些边缘情况会使它变得更复杂,比如小数点后三位数等等),并且 * 允许 * 前导零,因为它们无论如何都不会“破坏”值。如果它 * 必须 * 以非零开头,只需将初始值
[0-9]*
更改为[1-9][0-9]*
。对于仅为整数的情况(正如您添加的示例数据所指示的),这将是:sirbozc52#
要匹配以除零以外的任何数字开头的数字:
如果您还想匹配0:
如果只需要一个零,请删除最后一个加号
若要允许在第一个非零值之后出现任何字母数字,请执行以下操作:
6bc51xsx3#
这是对我最有效的方法:
hgc7kmma4#
由于您的代码是.NET,因此不应使用正则表达式解析Integer。只需使用UInt32.TryParse()方法
旧答案
下面这个简单的正则表达式可以实现
^[1-9]\d*$
eoigrqb65#
以下是您需要的内容:
它也接受小数,例如这些数字:
cqoc49vn6#
有时正则表达式甚至不能在某些浏览器中工作。因此这里有一个类似的逻辑: