Supponiamo che io abbia una lista ['TEST CLIENT 1', 'test client 2'] e un campo input dove poter fare una ricerca (salverò il valore nella variabile searchPattern). Il mio obiettivo è evidenziare tramite il tag <b> la parola (o meglio dire lettere) salvate in searchPattern se ovviamente sono presenti. Dunque, quando cerco client (o CLIENT) la lista deve diventare ['TEST <b> CLIENT </b> 1', 'test <b> client </b> 2'].
PS: item è il singolo elemento dell'array mentre scorro la lista.

codice:
Test #1: prima prova case sensitive
item.replace(searchPattern, `<b>${searchPattern}</b>`)
searchPattern='test' res=[['TEST CLIENT 1', '<b>test</b> client 2']
searchPattern='TEST' res=[['<b>TEST</b> CLIENT 1', 'test client 2']

Test #2: migliorato ma il secondo campo del replace è scorretto
item.replace(new RegExp(searchPattern, 'gi'), `<b>${searchPattern}</b>`)}
searchPattern='test' res=[['<b>test</b> CLIENT 1', '<b>test</b> client 2']
searchPattern='TEST' res=[['<b>TEST</b> CLIENT 1', '<b>TEST</b> client 2']

Test #3: indipendentemente dal testo (maiuscolo o minuscolo) riconosce la parola
item.replace(new RegExp(`(\\s|\\b)(${searchPattern})(\\s|\\b)`, 'gi'), `$1<b>$2</b>$3`)
searchPattern='test' res=['<b>TEST</b> CLIENT 1', '<b>test</b> client 2']
searchPattern='TEST' res=['<b>TEST</b> CLIENT 1', '<b>test</b> client 2']

e sarebbe perfetto ma se cercassi

searchPattern='lie' || 'LIE' res=['TEST CLIENT 1', 'test client 2']

non trova niente

PS3: non ricordo cosa succede se nell'array ci fossero stati più matching, ovvero se fosse stato  ['TEST CLIENT CLIENT 1', 'test client client 2']

Quello che cerco è possibile o meno? Idee per giungere alla soluzione? Magari sbaglio approcio.
PS: non vado d'accordo con le Regex complesse.

Grazie!