Если вы хотите извлечь текст внутри штрих-кода и применить это регулярное выражение, вы можете использовать exec, чтобы просто применить замену к тому, что находится внутри кода, можете использовать Захват групп и обратных ссылок см. Дополнительную ссылкуhttps://www.regular -expressions.info / refcapture.html
, в этом случае получите только текст внутри bbcode и обработайте его
let code = "[code=any]<h1>hello and bye</h1>e[/code]";
//extract only texto inside bbcode
let match = /\[code\=any\](.+)\[\/code\]/g.exec(code)[1];
//get <h1>hello</h1>e
let replacement = myObj.replaceSpecial(match);
см. https://regex101.com/r/KGCWmq/1
Это будет только если вы хотите получить, если вы хотите заменить, вы можете использовать функцию замены.
var myObj = {
replaceSpecial : function(str) {
str = str.replace(/&/g, "&");
str = str.replace(/>/g, ">");
str = str.replace(/</g, "<");
str = str.replace(/"/g, """);
str = str.replace(/'/g, "'");
return str;
}
};
let code = "[code=any]<h1>hello and bye</h1>e[/code]";
let match = /\[code\=any\](.+)\[\/code\]/g.exec(code)[1];
let replacement = myObj.replaceSpecial(match);
let string = code.replace(/\[code\=any\](.+)\[\/code\]/,"[code=any]"+replacement+"[/code]")
ОБНОВЛЕНО
Согласно ответу Wiktor Stribiżew, регулярное выражение может быть проверено так, чтобы bbcode был любым
myObj = {
replaceSpecial : function(str) {
return str.replace(/&/g, "&")
.replace(/>/g, ">")
.replace(/</g, "<")
.replace(/"/g, """)
.replace(/'/g, "'");
}
}
var s = '[code="HTML"]<h1>Hello</h1>[/code]';
var regex = /(\[code=[^\]]*])([^]*?)(\[\/code])/gi;
console.log( s.replace(regex, function($0, $group_match1, $group_match2, $group_match3) { return $group_match1 + myObj.replaceSpecial($group_match2) + $group_match3; }) );
Я надеюсь, что помогВы, и если это не то, что вы ожидаете, оставьте комментарий и отредактируйте вопрос