【问题标题】:JavaScript Function to Regex Find Prices and Detect Currency用于正则表达式查找价格和检测货币的 JavaScript 函数
【发布时间】: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


【解决方案1】:

Stack Overflow 不是来为您编写代码的。如果您遇到问题并需要帮助,Stack Overflow 就在这里。举个例子,试着写一个这样的正则表达式,说明它在哪些情况下有效,在哪些情况下无效。如果这不能帮助您解决问题,请提出问题。

作为入门资源,我会向您指出https://regex101.com/,它在解释您的正则表达式究竟匹配什么以及您可以在哪里尝试不同的输入方面做得非常出色。您还可以保存包括输入在内的正则表达式,然后在遇到困难时将其附加到此处的问题中。

由于您是新手,所以我做了一个简单的示例,它包含了所有给定的示例:https://regex101.com/r/cP5f94/1 您仍然需要使用它们构建一个 Javascript 对象并将$ 映射到USD,添加其他案例,等等。但它应该让你开始

祝你好运!

【讨论】:

  • 感谢您告诉我!对于那个很抱歉。感谢您的帮助!
【解决方案2】:

请先尝试解决问题,如果仍然无法解决,请询问。 希望这可以帮助。 使用https://regexr.com/ 制作您的正则表达式并使用codepen 来测试您的代码。

function findCurrency (string) {  
    let text = string.match('(\$)? ?([0-9.]+)(?: ?(USD))?');
  let curr;
  if(text[0]=='$' || text[2]=='USD')
    curr = 'USD'
  return {price: text[1], currencyType: ...} 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多