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

时间:2015-12-08 14:21:48

标签: javascript python regex 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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

 'aba12gg4a'.split(/[^0-9]+/).reduce(function( ret, elem ){
        if (! isNaN(elem = parseInt(elem))){
            ret.push( elem );
        }
        return ret;
    }, []);

答案 2 :(得分:0)

<SOAP-ENV:Fault...> </SOAP-ENV:Fault>

<proxy ... >
   <target faultSequence="faultlogger" endpoint="conf:/myService>
    ...
  </target>
</proxy> 

__表示strStripNumbers: function(str) { return str.match(/\d+/g).map(__.parseInt); }