我有一个文本框,它应该接受以下格式的输入:
[decimal],[decimal]; [十进制],[十进制]; [小数],[小数]
例如:
0.01,0.10; 0.20,0.50; 1.00,3.00; 4.00,1000.00
我对正则表达的了解非常差。我能做那么多
^([0-9]+(\.[0-9]+))?$
但是做不了多少。所以任何帮助将不胜感激。感谢。
答案 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