Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用逗号和句点验证正数_C#_Asp.net_Regex_Validation_Expression - Fatal编程技术网

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)
例如,在我的asp.net文本框中,如果我键入
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}[\.]
等中仍然存在严重的问题,如果您对其进行测试,就会发现这一点。:)