Вы можете извлечь все подстроки между {}
и []
с шаблоном /\[[^[\]]*]|{[^{}]*}/g
и искать нужные слова только в этих совпадениях.
Если вы ищете word
в word [myword word hisword word] and word here, {word myword theirword} too.
, вы ожидаете 3
как вывод:
var s = "word [myword word hisword word] and word here, {word myword theirword} too.",
keyword = "word",
results = 0,
rx = /\[[^[\]]*]|{[^{}]*}/g;
// COUNTING
var matches = s.match(rx);
var rxWord = new RegExp("\\b" + keyword + "\\b", "g");
for (var x of matches) {
results += x.match(rxWord).length;
}
console.log(results)
// REPLACING
console.log( s.replace(rx, function($0) { return $0.replace(rxWord, '$&_ID'); }) );
Шаблон \[[^[\]]*]|{[^{}]*}
- см. демо - совпадения:
\[
- [
char [^[\]]*
- любые 0+ символов, кроме [
и ]
]
- ]
char |
- или {
- {
char [^{}]*
- любые 0+ символов, кроме {
и }
}
- a }
char.