0

所以我对正则表达式相当陌生。任何帮助表示赞赏。

我有以下格式的字符串:

var str: ".item-61347 .item-79134 .item-79465 .item-96464"

我希望能够提取所有匹配的单词,只需要一些输入。例如:

input: 13 --> .item-61347 .item-79134
input: 79 --> .item-79134 .item-79465
input: 96464 --> .item-96464

输入将是一个字符串变量,所以理想情况下我希望能够做这样的事情:

str.match(<regexp with string containing input>)
4

2 回答 2

4

看起来根本不需要正则表达式:

var items = ".item-61347 .item-79134 .item-79465 .item-96464".split(" ");

var itemsThatMatch13 = items.filter( function(v) {
    return v.indexOf("13") > 0;
});

//[".item-61347", ".item-79134"]
于 2012-08-23T18:03:49.183 回答
2

这个怎么样:

var testRegex, 
    testInputs = [13, 79, 96464];
var testStr   = '.item-61347 .item-79134 .item-79465 .item-96464';
for (var i = 0, l = testInputs.length; i < l; ++i) {
    testRegex = new RegExp('[.]item-(?=[0-9]*' + testInputs[i] + ')[0-9]+', 'ig');
    console.log(testStr.match(testRegex));
}

关键是在您的正则表达式中使用前瞻来同时检查数字子模式您在其中的输入。

于 2012-08-23T17:59:32.470 回答