Estoy tratando de aislar una determinada letra, v , en el título de un caso rodeándola con una etiqueta <span> . Esta palabra de un solo carácter siempre tiene espacio a su alrededor, pero he intentado hacerlo a través de la coincidencia de límites de palabras en expresiones regulares: \b
(function() { let title = document.querySelector("h1>a"); let a = title.innerHTML; let b = a.match(/\b[v]\b/i); console.log(b); title.innerHTML = a.replace(b, '<span>\1</span>'); })(); span { text-transform: lowercase; color: black; background-color: red; } <h1> <a href="http://example.com/"> Viva v Vanuatu</a> </h1>Sin embargo, el código anterior no funcionará. No selecciona un carácter v aislado y coincide con cualquier carácter v que encuentre primero.
Quiero que sea así:
<h1> <a href="http://example.com/"> Viva <span>v</span> Vanuatu</a> </h1>No jquery por favor.
¿Este?
%1 es el primer grupo capturado
(function() { let title = document.querySelector("h1>a"); let a = title.textContent; title.innerHTML = a.replace(/\b(v)\b/, "<span>$1</span>"); })(); span { text-transform: lowercase; color: black; background-color: red; } <h1> <a href="http://example.com/"> Viva v Vanuatu</a> </h1>