正则表达式匹配德国数字

Zby*_*nek 3 regex formatting cultureinfo

我想知道,为德国文化测试正确数字格式的正则表达式会是什么样子.

在德语中,逗号用作十进制标记,点用于分隔数千.

因此:

  • 1.000等于1000
  • 1,000等于1
  • 1.000,89等于1000.89
  • 1.000.123.456,89等于1000123456.89

在我看来,真正的诀窍是确保可能有几个点,可选地后跟逗号分隔符

fun*_*urm 6

这是我要使用的正则表达式:

^-?\d{1,3}(?:\.\d{3})*(?:,\d+)?$
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

这是一个代码示例,将其解释为有效的浮点(注意parseFloat()字符串替换后).

var numbers = ['1.000', '1,000', '1.000,89', '1.000.123.456,89'];

document.getElementById('out').value=numbers.map(function(str) {
  return parseFloat(str.replace(/\./g, '').replace(',', '.'));
}).join('\n');
Run Code Online (Sandbox Code Playgroud)
<textarea id="out" rows="10" style="width:100%"></textarea>
Run Code Online (Sandbox Code Playgroud)