我有一個文本框,它應該接受以下格式的輸入:正則表達式序列的十進制數
[decimal],[decimal]; [decimal],[decimal]; [十進制],[十進制]
例如:
0.01,0.10; 0.20,0.50; 1.00,3.00; 4.00,1000.00
我的正則表達知識很差。我能夠做到這一點
^([0-9]+(\.[0-9]+))?$
但不能做更多。所以任何幫助將不勝感激。謝謝。
我有一個文本框,它應該接受以下格式的輸入:正則表達式序列的十進制數
[decimal],[decimal]; [decimal],[decimal]; [十進制],[十進制]
例如:
0.01,0.10; 0.20,0.50; 1.00,3.00; 4.00,1000.00
我的正則表達知識很差。我能夠做到這一點
^([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]+;){3}(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+)$
要求:
^(\s?[0-9]+\.[0-9]+,[0-9]+\.[0-9]+;){4}
此模式將匹配十進制:
^([0-9]+(\.[0-9]+))?$
但是,它不會只匹配一個十進制和之前或之後將不會允許任何其他字符它。另外,小數點組是可選的,所以它允許整個字符串爲空。
要修改這個字符串來匹配您的輸入嘗試這個辦法:
^(([0-9]+(?:\.[0-9]+)?),\s*([0-9]+(?:\.[0-9]+)?)(;\s*|$)){4}$
你好,這幾乎是正確的。但它允許用戶只輸入一半的序列。例如,輸入:0.01,0.10;也是可以接受的。我需要用戶總是必須輸入四對小數點。 – Mdb
@Mdb對不起,你的問題有點令人困惑,因爲在第一個例子中你有3對,而在第二個例子中你有4個。你可以通過在最後用'{* N}'。看到我更新的答案。 –
下面的正則表達式定義將匹配所有十進制數;並且,分隔符,也處理結束小數沒有分隔符在C#
((?<DecimalNumber>[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?)([;,]*))
使用for循環同一組
捕捉多個值,如果你希望它是非常嚴格和準確的例子匹配:
^(\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
你需要準確匹配什麼? –