Estoy tratando de hacer coincidir una palabra que tiene un espacio antes o después o ambos.
var sample = " test-abc -test# @test _test hello-test@ test test "
Como en el caso anterior, la primera 'prueba' contará porque tiene un espacio antes, la siguiente no contará porque no tiene espacio, la tercera 'prueba' contará porque tiene un espacio después, de manera similar la cuarta además, el quinto no contará porque no tiene espacios delante ni detrás y los dos últimos sí porque tienen espacios antes y después.
function countOccurences(str,word){ var regex = new RegExp("(\\b|(?<=_))"+word+"(\\b|(?<=_))","gi"); console.log((str.match(regex)|| []).length); }
La función que he escrito cuenta la palabra exacta pero no considera el espacio, por lo que el resultado que obtengo es 7 pero lo que estoy tratando de obtener es 5.
Puedes intentar usar match()
aquí:
var sample = " test-abc -test# @test _test hello-test@ test test "; var matches = sample.match(/(?<=\s)test|test(?=\s)/g, sample); console.log("There were " + matches.length + " matches of test with whitespace on one side");
El patrón de expresiones regulares utilizado aquí dice que coincida:
(?<=\s)test test preceded by whitespace | OR test(?=\s) test followed by whitespace
Tenga en cuenta que los 5 partidos aquí fueron:
test-abc @test _test test test