【发布时间】:2015-03-19 14:48:43
【问题描述】:
我需要检查一个字符串是否为有效价格。在某些语言环境中,“.”与“,”互换,分隔符可以是千位或数百位。 例如: 有效:
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
我使用的正则表达式是
/(\d+(?:[\.,](?![\.,])\d+)*)/g
但这给了我两个“1,23...233”的匹配项,即“1,23”和“233”作为匹配项,我不想为此返回任何匹配项。 Here 是我一直在研究的正则表达式。我真正想做的事,只要有“。”或 "," 下一个字符不应是 "."或“,”,它应该是一个数字。
【问题讨论】:
-
在我看来
!/\.\.|,,/.test(string)应该可以完成这项工作。如果您还想检查其他所有内容是否为数字,则:!/\.\.|,,|\D/.test(string)。如果找到任何模式,则表达式返回 false,否则返回 true。 -
你应该在这里使用插件而不是正则表达式。
-
@anubhava ,这似乎很好检查。如果我们需要从中选择价格怎么办,比如说“123,456.00 美元”
标签: javascript regex lookahead negative-lookahead