在特殊字符之间拆分字符串

时间:2018-04-27 00:15:23

标签: javascript regex

我想在这些'''字符之间分割一个字符串 我的字符串看起来像这样:

const str = " My random text '''tag1''' '''tag2''' ";     

,输出应如下所示:["tag1", "tag2"]

4 个答案:

答案 0 :(得分:1)

使用带有捕获组和RegEx.exec()的正则表达式来提取三个撇号之间的任何子字符串。该模式使用惰性匹配(.*?)来匹配撇号之间的任何字符序列(包括无)。

const str = " My random text '''tag1''' '''tag2''' ";
re = /'''(.*?)'''/g;
matches = [];

while (match = re.exec(str)) {
    matches.push(match[1]);
}

console.log(matches);

<强>输出

[ 'tag1', 'tag2' ]

答案 1 :(得分:0)

您可以使用以下功能:

function getBetween(content, start, end) {
    var result = [];
    var r = content.split(start);
    for (var i = 1; i < r.length; i++) {
        result.push(r[i].split(end)[0]);
        if (i < r.length - 1) { i++; } 
    }
    return result;
}

用法:

var result = getBetween(str, "'''", "'''");

导致

["tag1", "tag2"]

证明

const str1 = " My random text '''tag1''' '''tag2''' "; 
const str2 = "String '''tag1''' this will work '''tag2'''.";
const str3 = "'''tag1''' '''tag2''' sup man '''tag3'''";

function getBetween(content, start, end) {
    var result = [];
    var r = content.split(start);
    for (var i = 1; i < r.length; i++) {
        result.push(r[i].split(end)[0]);
        if (i < r.length - 1) { i++; }
    }
    return result;
}

var result1 = getBetween(str1, "'''", "'''");
var result2 = getBetween(str2, "'''", "'''");
var result3 = getBetween(str3, "'''", "'''");

console.log(result1);
console.log(result2);
console.log(result3);

希望这有帮助

答案 2 :(得分:0)

我认为一个简短而甜蜜的方法是:

var regex = /(?<=''')\w+(?=''')/mgi;
var matches =  "My random text '''tag1''' '''tag2'''".match(regex);

结果:(2)[“tag1”,“tag2”]

它匹配任何出现'''之间的所有内容。

答案 3 :(得分:-1)

尝试使用如下的模板文字:

str.split(`'''`);

结果可能如下所示:

[" My random text ", "tag1", " ", "tag2", " "]

希望这个帮助;)