有转义字符时如何在两个字符串之间获取字符串

时间:2019-04-23 12:47:45

标签: javascript regex

我正在尝试在两个字符串之间获取字符串,它的工作方式如下:

if (text.toLowerCase().indexOf("[CUSTOMTAG]") >= 0) {
      _data = /\[CUSTOMTAG](.*?)\[\/CUSTOMTAG]/g.exec(text);
      if (_data[1] && _data[1].length > 0) {
        const data = _data[1];
      }
    }

但是当字符串之间包含类似内容时,我会遇到问题:

[CUSTOMTAG]this is some
[/ru ugly content here[/CUSTOMTAG]

我在这里Cannot read property '1' of null遇到了异常,因为解析失败。 如何忽略两者之间的反斜杠字符?

1 个答案:

答案 0 :(得分:0)

它不优雅,但可以。您可能需要进行一些调整,但这是另一种选择:

var input = `[CUSTOMTAG]this is some [/ru ugly content here[/CUSTOMTAG] [CUSTOMTAG]test2[/CUSTOMTAG]`;
var startIndex = 0, endIndex = 0, results = [];
while ((endIndex = input.indexOf("[/CUSTOMTAG]", endIndex)) >= 0 && (startIndex = input.indexOf("[CUSTOMTAG]", startIndex)) >= 0) {
	results.push(input.substring(startIndex + "[CUSTOMTAG]".length, endIndex));
	
	endIndex += "[/CUSTOMTAG]".length;
	startIndex += "[CUSTOMTAG]".length;
}
console.log(results);