这是我的数字dnumbers的正则表达式:
\d+(.\d+)+(,\d+)
但现在我有问题,3号或30号不再有效。我的正则表达式也必须是3号和40号才能通过。
THX
答案 0 :(得分:3)
\d+(\.\d+)*(,\d+)?
正则表达式中的+
表示“至少一个”,而*
表示“零或更多”,?
表示“一个或没有”。
此外,您必须将句点转义为\.
,否则.
字符是正则表达式中的特殊字符,表示“任何单个字符”。
如果要确保数字中的.
(如果存在)始终按3的组分开,则可以使用此({x}
语法表示“完全x重复” “):
\d+(\.\d{3})*(,\d+)?
或者要一直强制使用千位分隔符,你可以使用它({x,y}
语法意味着“从x到y重复的任何地方):
\d{1,3}(\.\d{3})*(,\d+)?
答案 1 :(得分:1)
\d+((\.\d+)|(,\d+))?
答案 2 :(得分:1)
如果您真正想要的是.
千位分隔符,,
代表小数分隔符,请尝试以下操作:
\d{1,3}(\.\d{3})*(,\d+)?
答案 3 :(得分:1)
所以你想要一个匹配1和3.000和3.000,5?
的正则表达式如果您不想捕获结果,请执行以下操作:
[.\d]+(,\d+)?
但请记住,这不是很准确,因为它也匹配2.0.0,12,你还应该包括加减支票:
^(\+|-)?[.\d]+(,\d+)?
在C#中你可以用
做得更好double result;
bool isDouble = Double.TryParse("3.000,5", Globalisation.CultureInfo.InvariantCulture);