以下是各种财务显示的有效数字,具体取决于地区等:
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}?
型
13z8s7eq1#
你可能想设计一些表达式,不完全是,但可能类似于,
^\.?(?:(?:\d{1,3}[,. ])*\d{1,3}(?:\.\d{2})?|\d+\.\d+|\d+)\.?$
字符串一种设计方法是寻找最复杂的模式,编写一个表达式,修改,然后继续使用最简单的模式。
我刚刚在表达式的开头和结尾添加了两个\.?,但这并不完全正确,您将在任何您想要的地方合并它们。如果您希望简化/修改/探索表达式,在regex101.com的右上角面板中有解释。如果愿意,还可以在this link中观察它如何与一些示例输入匹配。
\.?
jex.im可视化正则表达式:x1c 0d1x的数据
ukxgm1gy2#
您可以创建一个正则表达式,以使事情更加简单:
\d*(?:([., ])(?:\d{3}\1)*\d{3})?(?:[.,]\d*)?
字符串Inspect on regex101.com这是如何工作的?
\d* Where numbers can occur ([., ])? Capture the thousands separator \d{3} Match 3 digits between separators \1 Recall thousands separator (?:[.,]\d*)? Optionally capures decimal part (no thousands separator allowed here)
az31mfrm3#
使用下面的正则表达式:
function parseNum(str) { const match = /^[\d.,\s]+$/.exec(str); return match ? match[0] : null; }
字符串
3条答案
按热度按时间13z8s7eq1#
你可能想设计一些表达式,不完全是,但可能类似于,
字符串
一种设计方法是寻找最复杂的模式,编写一个表达式,修改,然后继续使用最简单的模式。
Demo
我刚刚在表达式的开头和结尾添加了两个
\.?
,但这并不完全正确,您将在任何您想要的地方合并它们。如果您希望简化/修改/探索表达式,在regex101.com的右上角面板中有解释。如果愿意,还可以在this link中观察它如何与一些示例输入匹配。
RegEx电路
jex.im可视化正则表达式:
x1c 0d1x的数据
This expression would not validate, but only pass those numbers。
ukxgm1gy2#
您可以创建一个正则表达式,以使事情更加简单:
字符串
Inspect on regex101.com
这是如何工作的?
型
az31mfrm3#
使用下面的正则表达式:
字符串