【发布时间】:2019-01-21 17:25:59
【问题描述】:
我想创建一个 JavaScript 函数,它使用 Regex 从输入字符串中查找价格并检测价格的货币。
我要的格式是:
function handleCurrency (string) {
// ...
return {price: ..., type: ...}
}
例如,如果输入字符串是“test $105.62 (29,867.80 bits) (29,897.90 bits) (29,827.14 bits) test”,则返回的对象为:
{price: 105.62, type: '$'}
首先,该函数应支持欧元、美元和英镑。它还需要支持以下货币格式:
- $100.00
- (28,278.54 位)(28,307.04 位)$ 100.00
- 100.00 美元(28,278.54 位)(28,307.04 位)美元
- 100.00 美元
- 100.00 美元
- 100.00 美元
- 等
所有这些都将被检测为:
{price: 100, type: 'USD'}
提前致谢!
编辑:我编写了解决我的问题的函数。感谢大家的帮助!
function handleCurrency (string) {
let filter = input
filter = filter.replace(/USD/g,'$')
filter = filter.replace(/EUR/g,'€')
filter = filter.replace(/GBD/g,'£')
filter = filter.replace(/(?<!\d)\.(?!\d)/g, '')
filter = filter.replace(/[^\$\€\£\d\.]/g,'')
let price = filter
price = price.replace(/[^\d\.]/g,'')
price *= 1
let type = filter
type = type.replace(/[^\$\€\£]/g,'')
type = type[0]
return {price: price, type: type}
}
【问题讨论】:
-
欢迎来到 SO。当涉及到asking a good question 时,您可能会发现阅读网站help section 很有用。为了获得您问题的最佳答案,我们希望看到您首先尝试使用minimal reproducible example 自己解决问题。 Here's a question checklist you might find useful..
-
我个人会使用
parseInt,而不是*= 1,这是一种挑剔的做法,但是IMO代码变得更具可读性(而且执行起来可能更有效率)。另一个建议:在您的过滤器行中添加注释,说明正则表达式的作用,这也将提高您未来代码的可读性!
标签: javascript regex currency