Por que não consigo usar caracteres acentuados ao lado de um limite de palavras?
Estou tentando criar uma regex dinâmica que corresponda ao nome de uma pessoa. Funciona sem problemas na maioria dos nomes, até encontrar caracteres acentuados no final do nome.
Exemplo: Alguns nomes extravagantes
O regex que eu usei até agora é:
/\b(Fancy Namé|Namé)\b/i
Usado assim:
"Goal: Some Fancy Namé. Awesome.".replace(/\b(Fancy Namé|Namé)\b/i, '<a href="#">$1</a>');
Isso simplesmente não combina. Se eu substituir o é por um e, ele corresponde perfeitamente. Se eu tentar combinar um nome como "Some Fancy Naméa", ele funcionará perfeitamente. Se eu remover a palavra âncora de limite da última palavra, ela funcionará perfeitamente.
Por que a bandeira de limite de palavras não funciona aqui? Alguma sugestão de como resolver esse problema?
Eu considerei usar algo assim, mas não tenho certeza de como seriam as penalidades de desempenho:
"Some fancy namé. Allow me to ellaborate.".replace(/([\s.,!?])(fancy namé|namé)([\s.,!?]|$)/g, '$1<a href="#">$2</a>$3')
Sugestões? Idéias?