C# 使用逗号和句点验证正数
我需要一个正则表达式验证表达式,它将 允许C# 使用逗号和句点验证正数,c#,asp.net,regex,validation,expression,C#,Asp.net,Regex,Validation,Expression,我需要一个正则表达式验证表达式,它将 允许 正数(0-9) 、和 禁止 字母(a-z) 除和, 例如,在我的asp.net文本框中,如果我键入anything@#--
- 正数(0-9)
和、
- 字母(a-z)
- 除
和,
anything@#--如果我键入10.000,50
或10000.50
,则正则表达式验证将不允许它
我一直在尝试使用这个正则表达式:
^\d+(\.\d\d)?$
但是我的文本框也必须允许,
符号,并且我尝试只使用整数正则表达式验证,如果我键入字符串,它确实不允许,但它也不允许
和,
符号,而它应该允许数字(0-9)和
和,
符号您的正则表达式是
(?:\d|[,\.])+
或
它匹配一个或多个数字或、
或
一次或多次
也许你可以用这个(以数字开头,以数字结尾):
如果您需要更复杂的价格正则表达式,您应该使用:
(?:(?:[1-9]\d?\d?([ \,\.]?\d{3})*)|0)(?:[\.\,]\d+)?
编辑:为使其更可靠(且不获取00.50),您可以添加开始和结束符号检查:
(^|\s)(?:(?:[1-9]\d?\d?([ \,\.]?\d{3})*)|0)(?:[\.\,]\d+)($|\s)?
您的格式有点奇怪,因为它不是标准格式。
我的第一个想法是使用浮点而不是字符串,并使用范围验证属性来避免负数。
但是由于格式的原因,我不确定它是否能工作。
当然,另一种方法是正则表达式。
你提出的建议是指:
“一些数字可能是由一个点和两个数字组成的一组”。
这不是你想的
严格符合低于100000.99的数字示例一个正则表达式可以是:
^[0-9]{1-2}[\,][0-9]{3}([\,][0-9]{1-2})?$
阿维纳什·拉吉(Avinash Raj)发布了一个更具全局性的正则表达式,它可以接受所有正数:(?:\d |[,\.])+
我认为最适合您的正则表达式是:
^[\d]+(?:,\d+)*(?:\.\d+)?$
这将验证您喜欢的任何内容
同时:
不验证:
- 以
- 以字母结尾的数字
- 有数字的。逗号前
- 具有一个以上小数点的数字
在这里查看演示:不要使用\d
来匹配.NET中的[0-9]
首先,在.NET中,\d
将匹配任何脚本中的任何数字,例如:
654۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦᠖
所以你真的想使用[0-9]
规范不完整
您说只允许“数字、逗号和句点”,但我认为这不是全部规范。这将是^[0-9,.]+$
,并且将匹配
...,,,
调整规格
很难猜测您真正想要允许什么:10,1,1,1
可以接受吗
我们可以从这样的东西开始,得到一些格式相当好的字符串:
^(?:[0-9]+(?:[.,][0-9]+)?|[1-9][0-9]{0,2}(?:(?:\.[0-9]{3})*|(?:,[0-9]{3})*)(?:\.[0-9]+)?)$
玩游戏,看看什么应该和什么不应该匹配。。。当您确定最终规范时,我们可以调整正则表达式
样本匹配:
0
12
12.123
12,12
12,123,123
12,123,123.12456
12.125.457.22
12,
123.
1,1,1,1
样本不匹配:
0
12
12.123
12,12
12,123,123
12,123,123.12456
12.125.457.22
12,
123.
1,1,1,1
是正则表达式中的特殊符号,您应该将其反斜杠\。
这可能会对您有所帮助。匹配54۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦代码>匹配54۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦代码>匹配54۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦代码>哈,我想我会是第一个指出^[0-9,.]+$
的人lol@Jerry不,我的朋友,当我开始问这个问题并看到4个答案时,我感到非常惊讶!:)哪一个?我在第一个正则表达式中将\d
快捷方式替换为[0-9]。应该没问题。很高兴你修复了54۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦代码>问题:)但是在您的^[0-9]{1-2}[\.]
等中仍然存在严重的问题,如果您对其进行测试,就会发现这一点。:)