正则表达式匹配所有货币符号?

问题描述 投票:0回答:4

是否有一个正则表达式可以匹配 HTML 中出现的所有货币符号(不仅仅是 $)?我正在尝试从 html 页面中提取所有出现的金额。谢谢!

regex r
4个回答
44
投票

\p{Sc}
似乎就是您正在寻找的魔法咒语


1
投票

我将所有货币符号转换为Unicode,如果您想手动检查,我建议您使用此代码:

[\u00a4\u060b\u0e3f\u002f\u002e\u20bf\u20b5\u00a2\u20a1\u0024\u0434\u0435\u043d\u0438\u043d\u0024\u20ab\u20ac\u0192\u002c\u20b2\u20b4\u20ad\u010d\u043b\u0432\u20ba\u20a5\u20a6\u0024\u20b1\u00a3\u17db\u20bd\u20b9\u20a8\u20aa\u09f3\u20ae\u20a9\u00a5\u0142\u20b3\u20a2\u20b0\u20bb\u20af\u20a0\u20a4\u2133\u20a7\u211b\u20b7\u20b6\u09f2\u09f9\u09fb\u07fe\u07ff\u0bf9\u0af1\u0cb0\u0dbb\u0dd4\ua838\u1e2f\u0046\u0061-\u007a\u0041-\u005a\u0030-\u0039 \u2000-\u200f\u2028-\u202f\u0621-\u0628\u062a-\u063a\u0641-\u0642\u0644-\u0648\u064e-\u0651\u0655\u067e\u0686\u0698\u06a9\u06af\u06be\u06cc\u06f0-\u06f9\u0629\u0643\u0649-\u064b\u064d\u06d5\u0660-\u0669\u005c]{1,5}

0
投票

JavaScript 不支持 PCRE 正则表达式属性

\p{Sc}

您需要使用等效的

function getCurrencySymbol(price: string): string {
  const ScRe =
    /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]/;

  return price.match(ScRe)[0];
}


// returns "£"
getCurrencySymbol("£10");

0
投票

在寻找相同的解决方案时,我遇到了这个问题。所以我用JS想出了自己的解决方案。这可能并不适合每个人,因为我想做的就是忽略给定字符串中的数字、逗号和点。

function extractCurrencySymbol (currencyString) {
            // Regular expression to match any currency symbol
            let currencyRegex = /[^\d.,\s]/;
            
            // Use match method to find the currency symbol in the string
            let match = currencyString.match(currencyRegex);
            
            // Check if a match is found
            if (match) {
                // Return the matched currency symbol
                return match[0];
            } else {
                // Return null if no currency symbol is found
                return null;
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.