繁体   English   中英

JavaScript:提取字符串中所有出现的正则表达式

[英]JavaScript: extract all occurrences of a regular expression in a string

我有一个Python函数,该函数从包含数字簇的字符串中组成一个整数列表:

def str_strip_numbers(s):
    """
    Returns a vector of integer numbers
    embedded in a string argument
    """
    return [int(x) for x in re.compile('\d+').findall(s)]

假设有an1kb12s336z ,则返回[1,12,336]

在JavaScript中获得相同效果的最佳方法是什么? 我用正则表达式摆弄了些花,但并没有收获多少。 这不是我所希望的:

> var nn = /\d+/g
undefined
> nn
/\d+/g
> 'aba12gg4a'.search(nn)
3

看起来我得到了数字计数。

搜索不是您要查找的功能。 String.prototype.search()返回第一个匹配结果的位置

您应该改用String.prototype.match: 'aba12gg4a'.match(/\\d+/g) 这将返回在源字符串中找到的所有匹配项的数组。

你可以试试看 它将删除字符串中的所有字母,并拆分为数字数组。 然后过滤掉任何不使用parseInt解析的值,即字符。

 'aba12gg4a'.split(/[^0-9]+/).reduce(function( ret, elem ){
        if (! isNaN(elem = parseInt(elem))){
            ret.push( elem );
        }
        return ret;
    }, []);
strStripNumbers: function(str) {
  return str.match(/\d+/g).map(__.parseInt);
}

__表示lodash

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM