.split()的正则表达式,用于分隔空格(引号除外)上的字符串

时间:2018-11-27 13:40:27

标签: javascript regex

是否可以使用正则表达式将字符串拆分为空格和引号?出于性能原因,我只能使用.split()而不是.match()

示例:

'This is an "example for" stack overflow.'

输出:

["This", "is", "an", "example for", "stack", "overflow"]

2 个答案:

答案 0 :(得分:1)

您问题的简短答案是,可以在String.prototype.split()中使用正则表达式。 这是基于示例的所需代码:

'This is an "example for" stack overflow.'.split(/\"\s|\s\"|\s|\"/g);

答案 1 :(得分:0)

使用该正则表达式,您可以更轻松地用纯记号捕获单词,或者用双引号将包含空格但双引号括起来的单词捕获,而不是拆分字符串。

"([\w ]*?)"|\w+

下面是相同的示例Javascript代码,

var s = 'This is an "example for" stack overflow.';
var re = /"([\w ]*?)"|\w+/g;
var arr = [];
do {
    m = re.exec(s);
    if (m) {
        if (m[1]) {
            arr.push(m[1]);
        } else if (m[0]) {
            arr.push(m[0]);
        }
        
    }
} while (m);

console.log(arr);