Первое, что я заметил, это следующее: регулярное выражение javascript, такое как ваш (/\*AA\*/).exec(data)
, не изменяет цель - этот оператор сопоставляет данные с шаблоном и возвращает совпадение (я). Вы не присваиваете это возвращаемое значение чему-либо, поэтому выполнение (/\*AA\*/).exec(data)
не оказывает (внешнего) влияния ни на что.
var found = (/\*AA\*/).exec(data)
получит соответствующую часть, но это все равно не изменит содержимое data
. Если вы ищете все совпадения, игнорируя несоответствующий текст, вы можете извлечь совпадения из данных без необходимости их изменения.
Начните с переменной regex - потому что повторное использование .exec(s)
продолжает совпадать с того места, где оно было остановлено. Буквальное регулярное выражение вроде вашего /\*AA\*/
не может этого сделать.
Здесь я объединяю ваши выражения и включаю опцию g
"global match":
let re = /\*(AA|BB|CC|DD)\*/g;
Затем выполните цикл, пока вы найдете совпадения:
let re = /\*(AA|BB|CC|DD)\*/g;
let matches = [];
var m;
do {
m = re.exec(data);
if (m) {
// m.index can tell you where in `data` the match
// was found, if you care.
console.log('matched: ' + m[0]);
// push the match into our array, to be used later.
matches.push(m[0]);
}
} while (m);
// now do something with the matches