我想知道,用于测试德国文化正确数字格式的正则表达式会是什么样子。
在德语中,逗号用作小数点,点用于分隔千位。
所以:
在我看来,真正的诀窍是确保可能有几个点,可选地后跟逗号分隔符
最佳答案
这是我将使用的正则表达式:
^-?\d{1,3}(?:\.\d{3})*(?:,\d+)?$
Debuggex Demo
这是一个将其解释为有效浮点的代码示例(注意字符串替换后的
parseFloat()
)。编辑:如 Severin Klug 的回答中提到的 ,以下代码假定数字已知为德语格式。尝试“检测”一个字符串是否包含德语格式或美国格式编号并不是任意的,也超出了这个问题的范围。
'1.234'
在两种格式中都有效,但具有不同的实际值,没有上下文就不可能确定是哪种格式。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');
<textarea id="out" rows="10" style="width:100%"></textarea>
关于regex - 匹配德国数字的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28360966/