我无法为西班牙语数字格式

时间:2018-06-15 15:48:52

标签: c# regex

我试图将c#上的正则表达式正则表达式转换为西班牙数字格式。

我希望它接受这种格式的数字

带逗号的小数和带点的千位分隔符

10.000.000,262 <br>200,262<br>1.000.000

RegEx:

^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{10})?)

3 个答案:

答案 0 :(得分:0)

您似乎正在使用具有固定数量的允许小数位数的非常特定的输入格式。我认为你想要的模式是这样的:

(\d{1,3}.?(\d{3}.?)*\d{3}(,\d{0,3})?|\d{1,3}(,\d{10})?)

Demo

答案 1 :(得分:0)

要使用逗号匹配小数,使用带有点的千位分隔符,您可以使用:

\b\d{1,3}(\.\d{3})*(,\d+)?\b

<强>解释

  • \b字边界
  • \d{1,3}匹配数字1 - 3次
  • (\.\d{3})*匹配一个点和一个3位数,并重复零次或多次
  • (,\d+)?匹配逗号和一个或多个数字并制作可选项
  • \b字边界

Regex demo

请注意,如果您想要按字面匹配一个点,则应该将其转义\.

答案 2 :(得分:0)

如果你想使用1到3的数字规则,它将是这样的

(?<![\d.,])(?:\d{1,3}(?:\.\d{3})*(?:,\d{1,3})?)(?![\d.,])

可读版本

 (?<! [\d.,] )
 (?:
      \d{1,3} 
      (?:
           \.
           \d{3} 
      )*
      (?: , \d{1,3} )?
 )
 (?! [\d.,] )