Javascript-如何将正则表达式^d*\.?\d{0,2}$更改为允许逗号而不是小数点?
我正在使用模式Javascript-如何将正则表达式^d*\.?\d{0,2}$更改为允许逗号而不是小数点?,javascript,regex,Javascript,Regex,我正在使用模式^\d*\.?\d{0,2}$来显示货币,例如,它只允许在可选小数点之前的数字和小数点之后的两个小数点 出于本地化目的,我需要有一个选项,允许使用逗号而不是小数点,允许使用小数点而不是逗号来表示以千为单位的数字,例如,123.123,00欧元而不是123123.00欧元 我原以为用,替换,中的,很简单,但这似乎不起作用。[/,]将检查是否有点或逗号 如果没有[],您只需检查它们是否在后面^\d*\,?\d{0,2}$这对我来说很好。我用123,00对它进行了测试。下面的正则表达式似
^\d*\.?\d{0,2}$
来显示货币,例如,它只允许在可选小数点之前的数字和小数点之后的两个小数点
出于本地化目的,我需要有一个选项,允许使用逗号而不是小数点,允许使用小数点而不是逗号来表示以千为单位的数字,例如,123.123,00欧元而不是123123.00欧元
我原以为用
,
替换,
中的,
很简单,但这似乎不起作用。[/,]
将检查是否有点或逗号
如果没有[],您只需检查它们是否在后面
^\d*\,?\d{0,2}$
这对我来说很好。我用123,00对它进行了测试。下面的正则表达式似乎是您真正想要的:
^(?:\d{1,3}(,\d{3})*(\.\d+)?|\d{1,3}(\.\d{3})*(,\d+)?)$
说明:
\d{1,3} match 1 to 3 numbers
(,\d{3})* followed any amount of ,xxx groups
(\.\d+)? followed by an optional period and then one or more numbers
解释交替的前半部分应该足够了,因为后半部分只是转换逗号和句号的角色,就像在欧洲看到的那样
下面是演示此正则表达式的示例:
console.log(/^(?:\d{1,3}(,\d{3})*(\。\d+)?\d{1,3}(\。\d{3})*(\,\d+)$/.test('1');
console.log(/^(?:\d{1,3}(,\d{3})*(\。\d+)?\d{1,3}(\。\d{3})*(\,\d+)$/.test('1');
console.log(/^(?:\d{1,3}(,\d{3})*(\。\d+)?\d{1,3}(\。\d{3})*(\,\d+)$/.test('12');
console.log(/^(?:\d{1,3}(,\d{3})*(\。\d+)?\d{1,3}(\。\d{3})*(\,\d+)$/.test(\,\d');
console.log(/^(?:\d{1,3}(,\d{3})*(\.\d+)?\d{1,3}(\.\d{3})*(\.\d+)$/.test(\.\d+));
console.log(/^(?:\d{1,3}(,\d{3})*(\.\d+)?\d{1,3}(\.\d{3})*(\.\d+)$/.test(\.\d+));
console.log(/^(?:\d{1,3}(,\d{3})*(\.\d+)?\d{1,3}(\.\d{3})*(\.\d+)$/.test(\.\d+));
console.log(/^(?:\d{1,3}(,\d{3})*(\.\d+)?\d{1,3}(\.\d{3})*(\.\d+)$/.test(\.\d+));
console.log(/^(?:\d{1,3}(,\d{3})*(\.\d+)?\d{1,3}(\.\d{3})*(\.\d+)$/.test(\.\d+));
console.log(/^(?:\d{1,3}(,\d{3})*(\.\d+)?\d{1,3}(\.\d{3})*(\.\d+)$/.test(\.\d')
/^\d*,?\d{0,2}$/
对Medoe有效似乎不起作用是一个非常精确的问题描述。到底是什么不起作用?你用什么样的样本来测试这个问题?/^\d*(?:,\d{3})*\.(?:\.\d{3})*,,?)\d{0,2}$/
应该适用于这两种情况