时间:2011-07-21 11:52:05

标签: javascript regex

我无法看到我在哪里出错:

var TestString = '+test +"testing multi" -not -"and not this" "w00t" hehe nice +\'test this\' -\'and this as well\'';
var regex = new RegExp('([\\+\\-]{0,1}([\\\'"]).*?\\1|[^\\s]+)', 'g');
var match = regex.exec(TestString);
if (match != null) {
    for (var i = 1; i < match.length; i++) {
        alert('Match ' + i + ': "' + match[i] + '"');
    }
}

出于某种原因,只有+ test匹配,然后是空匹配,就是这样。

1 个答案:

答案 0 :(得分:3)

嗯,这似乎工作正常

var TestString = '+test +"testing multi" -not -"and not this" "w00t" hehe nice +\'test this\' -\'and this as well\'';
var match = TestString.match(/([+-]?([\\'"]).*?\2|[^\s]+)/gi)
if (match != null) {
    for (var i = 1; i < match.length; i++) {
         alert('Match ' + i + ': "' + match[i] + '"');
    }
}

这不是故意的......我只是将RegExp重写为文字,因为我发现更容易阅读:)

输出

Match 1: "+"testing multi""
Match 2: "-not"
Match 3: "-"and not this""
Match 4: ""w00t""
Match 5: "hehe"
Match 6: "nice"
Match 7: "+'test this'"
Match 8: "-'and this as well'"