C# 正则数问题
这是我的数字数据编号正则表达式:C# 正则数问题,c#,regex,C#,Regex,这是我的数字数据编号正则表达式: \d+(.\d+)+(,\d+) 但现在我有一个问题,数字3或30不再有效。什么必须是我的正则表达式,数字3和40也将通过 Thx 正则表达式中的+表示“至少一个”,而*表示“零或多个”,而?表示“一个或无” 此外,必须将句点转义为\。,否则字符在regex中是一个特殊字符,表示“任何单个字符” 如果您想确保编号中的总是以3为一组将数字分隔开,您可以使用此选项({x}语法表示“恰好x个重复”): 或者,为了始终强制使用数千个分隔符,您可以使用以下方法({x,y
\d+(.\d+)+(,\d+)
但现在我有一个问题,数字3或30不再有效。什么必须是我的正则表达式,数字3和40也将通过
Thx
正则表达式中的+
表示“至少一个”,而*
表示“零或多个”,而?
表示“一个或无”
此外,必须将句点转义为\。
,否则
字符在regex中是一个特殊字符,表示“任何单个字符”
如果您想确保编号中的
总是以3为一组将数字分隔开,您可以使用此选项({x}
语法表示“恰好x个重复”):
或者,为了始终强制使用数千个分隔符,您可以使用以下方法({x,y}
语法的意思是“从x到y的任意重复):
正则表达式中的+
表示“至少一个”,而*
表示“零或多个”,而?
表示“一个或无”
此外,必须将句点转义为\。
,否则
字符在regex中是一个特殊字符,表示“任何单个字符”
如果您想确保编号中的
总是以3为一组将数字分隔开,您可以使用此选项({x}
语法表示“恰好x个重复”):
或者,为了始终强制使用数千个分隔符,您可以使用以下方法({x,y}
语法的意思是“从x到y的任意重复):
如果您真正想要的是
作为千位分隔符,而,
作为十进制分隔符,请尝试以下操作:
\d{1,3}(\.\d{3})*(,\d+)?
如果您真正想要的是
作为千位分隔符,而,
作为十进制分隔符,请尝试以下操作:
\d{1,3}(\.\d{3})*(,\d+)?
那么你想要一个匹配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);
那么你想要一个匹配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);
数字是什么?你是说十进制吗?您是如何获得当前Regexp的?(它看起来离你需要的东西很远)。您希望接受什么格式,有样品吗?数字(或数字“dnumber”)是什么?你是说十进制吗?您是如何获得当前Regexp的?(它看起来离你需要的东西很远)。你想要接受什么格式,你有样本吗?我认为OP更多的是尝试用标准的欧洲格式解析数字,
,
是十进制分隔符,
是数字分组标记。我认为OP更多的是尝试用标准的欧洲格式解析数字,,
是十进制分隔符,
是数字分组标记。您的最后一个将匹配12000.423
;它没有强制第一个块有数千个分隔符。@马克:是的,这是故意的(为了匹配像12000,34这样的数字)。但是如果需要强制使用数千个分隔符,那么只需将前导的\d+
改为\d{1,3}
即可。确定:)只需签入即可。我给了你+1。你的最后一个将匹配12000.423
;它没有强制第一个块有数千个分隔符。@马克:是的,这是故意的(为了匹配像12000,34这样的数字)。但是如果需要强制使用数千个分隔符,那么只需将前导的\d+
改为\d{1,3}
即可。确定:)只需签入即可。反正我给了你+1。