Javascript Regex-从价格中抓取分隔符

Javascript Regex - grab delimiter from price

本文关键字:抓取 分隔符 Regex- Javascript      更新时间:2023-09-26

考虑这四种不同的价格:

3 900,38 zł

1900,00€

100000美元/年

编号9 853,05

我想从这些字符串中获取所有分隔符。根据语言的不同,分隔符可以是逗号、句点或空格(请参阅抛光)。基本上,当出现在两位数字之间时,我需要匹配其中一个[''s,''.](我不想匹配作为货币符号格式的一部分出现的空白)。

这是我的正则表达式:

/(?:'d(['s,'.])'d)/g

问题是匹配总是包括分隔符两侧的数字。有没有办法在没有数字的情况下返回匹配项?我很困惑,既然数字属于非捕获组,为什么它们会首先返回。

注意:我已经有了替代的解决方案,但这个问题实际上是在问,尽管javascript缺乏前瞻性,但这是否可以用一个regex来实现。谢谢*

这是我的电笔:http://codepen.io/nhmaggiej/pen/LEabZY

谢谢!

我认为它适用于RegExp.exec(string):(仅用于第一次匹配?)

var delimiterRegex = new RegExp(/'d(,)'d/g);
console.log(delimiterRegex.exec('3 900,38 zł'))

String.match()似乎不返回捕获的组,而是返回字符串中的所有匹配项。

中有详细信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

"match"方法忽略带有"g"-选项的方括号,而使用多个"exec":

var numbers = ["3 900,38 zł", "1.900,00 €", "$100,000.00"],
    regexp  = /'d(['s','.])'d/g,
    results = [], temp = []
for (var i=0; i < numbers.length; i++) {
    var numberOfIccurences = (numbers[i].match(regexp) || []).length
    temp = []
    for (var j = 0; j < numberOfIccurences; j++ ) {
        temp.push( regexp.exec( numbers[i] )[1] )
    }
    results.push( temp )
}
console.log( results )

在这里你可以玩它:https://jsfiddle.net/sdLj5qay/