RegEx用于十进制数字序列

时间:2014-02-05 08:42:47

标签: c# regex

我有一个文本框,它应该接受以下格式的输入:

[decimal],[decimal]; [十进制],[十进制]; [小数],[小数]

例如:

0.01,0.10; 0.20,0.50; 1.00,3.00; 4.00,1000.00

我对正则表达的了解非常差。我能做那么多

^([0-9]+(\.[0-9]+))?$

但是做不了多少。所以任何帮助将不胜感激。感谢。

5 个答案:

答案 0 :(得分:1)

此模式将匹配十进制字符串:

^([0-9]+(\.[0-9]+))?$

但是,它不仅会匹配一个小数,也不会允许其前后的任何其他字符。此外,十进制组是可选的,因此它允许整个字符串为空。

要修改此字符串以匹配您的输入,请尝试:

^(([0-9]+(?:\.[0-9]+)?),\s*([0-9]+(?:\.[0-9]+)?)(;\s*|$)){4}$

答案 1 :(得分:1)

你的正则表达式可能就像(你可能需要调整空格,因为它们在你的例子中不完全清楚它们是正确的)

此外,表达式将取决于末尾的分号是否为:

可选的:

^(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+;){3}(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+;?)$

不应该在那里:

^(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+;){3}(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+)$

需要:

^(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+;){4}

答案 2 :(得分:0)

尝试使用它:

(\d+\.\d+,\d+\.\d+;?)\s*

答案 3 :(得分:0)

以下正则表达式定义将匹配所有十进制数;和,分隔符,也处理没有分隔符的结束小数

((?<DecimalNumber>[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?)([;,]*))

在C#中使用for循环来捕获同一组的多个值

答案 4 :(得分:0)

如果您希望它非常严格并且完全符合您的示例:

^(\d+\.\d+\,\d+\.\d+;\s){3}(\d+\.\d+\,\d+\.\d+\s*)

如果它可以更宽松并允许使用白色空格:

^(\s*\d+\.\d+\s*\,\s*\d+\.\d+\s*;\s*){3}(\s*\d+\s*\.\d+\s*\,\s*\d+\.\d+\s*)

最后一个也匹配

0.01, 0.10;  0.20,   0.50; 1.00 ,3.00; 4.00  ,1000.00