Tengo muchos problemas con una simple coincidencia de expresiones regulares.Problema de expresión regular de Javascript con by caracteres internacionales
Tengo esta cadena con caracteres acentuados (esto es solo un ejemplo) "Botó Entrepà Nadó Facebook! "
y quiero unir palabras usando palabras de otra lista.
Esta es una versión simplificada de mi código. Por ejemplo, para que coincida con "Botó
"
var matchExpr = new RegExp ('\\b' + 'Botó' + '\\b','i');
"Botó Entrepà Nadó Facebook! ".match(matchExpr);
Si lo ejecuto, que no coincide con "Botó
" como se esperaba (Firefox, IE y Chrome).
Pensé que era un error de mi parte. Pero aquí viene la diversión ...
Si modifico la cadena como esta "Botón Entrepà Nadó Facebook! "
(nótese la "n
" después de "Botó
') y corro el mismo código:
var matchExpr = new RegExp ('\\b' + 'Botó' + '\\b','i');
"Botón Entrepà Nadó Facebook! ".match(matchExpr);
Coincide con' Botó
" !!!! ????? (al menos en Firefox). Esto no tiene sentido para mí ya que "n
" NO es un límite de palabra (que coincide con \b
).
Si intenta hacer coincidir la palabra completa:
var matchExpr = new RegExp ('\\b' + 'Botón' + '\\b','i');
"Botón Entrepà Nadó Facebook! ".match(matchExpr);
Funciona.
Para hacerlo un poco más extraño, agregamos otra letra acentuada al final.
var matchExpr = new RegExp ('\\b' + 'Botóñ' + '\\b','i');
"Botóñ Entrepà Nadó Facebook! ".match(matchExpr);
Si intentamos hacer coincidir esto, no coincide con nada. PERO, si tratamos este
var matchExpr = new RegExp ('\\b' + 'Botóñ' + '\\b','i');
"Botóña Entrepà Nadó Facebook! ".match(matchExpr);
coincide "Botóñ
". Cuál está mal.
Si tratamos de hacer coincidir "Facebook", funciona como se esperaba. Si intenta hacer coincidir palabras con acentos en el medio, funciona como se esperaba. Pero si intenta hacer coincidir las palabras con un acento al final, falla.
¿Qué estoy haciendo mal? Es este el comportamiento esperado?
* Así que funcionará para las palabras con acentos al final, pero no con acentos al final. *? –
Creo que su última oración necesita un poco de ayuda ... – Pointy
@Felix @Pointy gracias, corregido –