[英]How to get string between two strings when there are escaping characters
I am trying to get string between two strings and it works like this: 我试图在两个字符串之间获取字符串,它的工作原理如下:
if (text.toLowerCase().indexOf("[CUSTOMTAG]") >= 0) {
_data = /\[CUSTOMTAG](.*?)\[\/CUSTOMTAG]/g.exec(text);
if (_data[1] && _data[1].length > 0) {
const data = _data[1];
}
}
But I have problem when string between contains something like: 但是当字符串之间包含类似的东西时,我有问题:
[CUSTOMTAG]this is some
[/ru ugly content here[/CUSTOMTAG]
I am getting exception here Cannot read property '1' of null
because parsing fail. 我在这里得到异常Cannot read property '1' of null
因为解析失败。 How I can ignore excaping characters between? 我如何能够忽略两者之间的兴奋角色?
It's not elegant but works. 它不优雅但有效。 You may need to make some adjustments but it's an alternative: 您可能需要进行一些调整,但它是另一种选择:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.