我正在尝试在两个字符串之间获取字符串,它的工作方式如下:
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
遇到了异常,因为解析失败。
如何忽略两者之间的反斜杠字符?
答案 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);