Javascript 用正则表达式定义财务编号

Javascript 用正则表达式定义财务编号,javascript,regex,Javascript,Regex,以下是各种财务显示的有效数字,具体取决于地区等: 1,000 1000.00 1,000,000.00 2.000.000,00 123748 # without commas 4 294 967 295,000 0.24 .24 24 24. 对于上述情况,找到正则表达式的更好方法是什么,为每个模式执行一个大型正则表达式还是多个正则表达式?例如,单个图案如下所示: no_thousands_separator = '\d+[.,]?\d{0,3}? 您可以制作一个正则表达式,以使事情更简单

以下是各种财务显示的有效数字,具体取决于地区等:

1,000
1000.00
1,000,000.00
2.000.000,00
123748 # without commas
4 294 967 295,000
0.24
.24
24
24.
对于上述情况,找到正则表达式的更好方法是什么,为每个模式执行一个大型正则表达式还是多个正则表达式?例如,单个图案如下所示:

no_thousands_separator = '\d+[.,]?\d{0,3}?

您可以制作一个正则表达式,以使事情更简单:

\d*(?:([., ])(?:\d{3}\1)*\d{3})?(?:[.,]\d*)?

这是怎么回事

\d*可以出现数字的地方
([., ])?     捕捉千人分隔符
\d{3}在分隔符之间匹配3位数字
\1.回收数千个分离器
(?:[,]\d*)?可选capures小数部分(此处不允许使用千位分隔符)

您可能想要设计一些表达式,不完全是,但可能类似于

^\.?(?:(?:\d{1,3}[,. ])*\d{1,3}(?:\.\d{2})?|\d+\.\d+|\d+)\.?$
设计的一种方法是寻找最复杂的模式,编写一个表达式,修改,然后继续使用最简单的模式

我刚刚在表达式的开头和结尾添加了两个
\?
,但这并不是真的正确,您将在任何地方合并它们


如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况


正则表达式电路 可视化正则表达式:


.你到底想匹配什么?
429497295000
应该是一个完整的匹配吗?这是您想要匹配的唯一值,还是它也可能是更大文本的一部分?如果您想要覆盖所有的基础,这对于regex来说可能是一个太复杂的问题,无法单独处理。看看这里的答案,也许可以考虑使用这样的答案。