Supongamos que aquí hay un texto de muestra:
Hello this is testing _testisgood _test test ilovetesting again test
la expresión regular
/test/gi
Da toda la test
, pero solo quiero la cadena de test
que está rodeada por algún otro carácter, excepto que el espacio significa lo contrario de la coincidencia exacta. En otras palabras, la test
en testing
, _testisgood
, ilovetesting
quiero que coincida.
La respuesta de Bill es buena, pero puede que le guste esta: simplemente encuentre todas las palabras con prueba y luego filtre las inútiles;
const s = "Hello this is testing _testisgood _test test ilovetesting again test" console.log( (s.match(/[^\s]*test[^\s]*/gi) || []).filter(s => s !== 'test') )
La expresión regular a continuación coincidirá con 'test'
cuando tenga un prefijo de carácter que no sea un espacio en blanco o una corrección posterior.
/([^\s]+test[^\s]*|[^\s]*test[^\s]+)/gi;
O
/(\S+test\S*|\S*test\S+)/gi;
const sentence = "Hello this is testing _testisgood _test test ilovetesting again test"; regex = /([^\s]+test[^\s]*|[^\s]*test[^\s]+)/gi; console.log(sentence.match(regex));
Puede hacer coincidir solo _testisgood
e ilovetesting
en su ejemplo especificando uno o más caracteres que no sean espacios en blanco antes y después de test
, así:
/[^\s]+test[^\s]+/gi
Si también desea hacer coincidir testing
, suelte [^\s]+
desde el principio del patrón.