使用正则表达式验证 Javascript 中的价格
Validation of price in Javascript using Regex
我需要检查一个字符串是否是有效价格。在某些语言环境中,“.”与“,”互换,分隔符可以是千位或百位。
例如:
有效:
1234
1,234
1.234
1,23,334
1.23.334
1,23,334.00
1.23.334,00
无效:
1,23...233
1,,23
etc
我用过的Regex是
/(\d+(?:[\.,](?![\.,])\d+)*)/g
但这给了我“1,23...233”的两个匹配项,即“1,23”和“233”作为匹配项,我不想 return 任何匹配项为了那个原因。 Here 是我一直在研究的正则表达式。每当有“。”时,我真正想做的事情。或“,”下一个字符不应该是“。”或“,”,它应该是一个数字。
看来你想要这样的东西,
^\d+(?:\.\d+)?(?:,\d+(?:\.\d+)?)*$
或
^(?!.*(,,|,\.|\.,|\.\.))[\d.,]+$
开头的否定前瞻断言字符串不会包含连续的逗号或点或点和逗号。
你可以简单地这样做。
^\d+(?:[.,]\d+)*$
尝试 this.See 演示。
https://regex101.com/r/tX2bH4/61
var re = /^\d+(?:[.,]\d+)*$/gm;
var str = '1234\n1,234\n1.234\n1,23,334\n1.23.334\n1,23,334.00\n1.23.334,00\n1,23...233\n1,23.';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
我需要检查一个字符串是否是有效价格。在某些语言环境中,“.”与“,”互换,分隔符可以是千位或百位。 例如: 有效:
1234
1,234
1.234
1,23,334
1.23.334
1,23,334.00
1.23.334,00
无效:
1,23...233
1,,23
etc
我用过的Regex是
/(\d+(?:[\.,](?![\.,])\d+)*)/g
但这给了我“1,23...233”的两个匹配项,即“1,23”和“233”作为匹配项,我不想 return 任何匹配项为了那个原因。 Here 是我一直在研究的正则表达式。每当有“。”时,我真正想做的事情。或“,”下一个字符不应该是“。”或“,”,它应该是一个数字。
看来你想要这样的东西,
^\d+(?:\.\d+)?(?:,\d+(?:\.\d+)?)*$
或
^(?!.*(,,|,\.|\.,|\.\.))[\d.,]+$
开头的否定前瞻断言字符串不会包含连续的逗号或点或点和逗号。
你可以简单地这样做。
^\d+(?:[.,]\d+)*$
尝试 this.See 演示。
https://regex101.com/r/tX2bH4/61
var re = /^\d+(?:[.,]\d+)*$/gm;
var str = '1234\n1,234\n1.234\n1,23,334\n1.23.334\n1,23,334.00\n1.23.334,00\n1,23...233\n1,23.';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}