Foros del Web » Programando para Internet » Javascript »

buscar estrictamente una palabra con regex

Estas en el tema de buscar estrictamente una palabra con regex en el foro de Javascript en Foros del Web. Hola comunidad como va todo tengo un script que busca similitudes con palabras que yo tengo guardadas en mi sistema pero el problema es que ...
  #1 (permalink)  
Antiguo 30/08/2016, 06:57
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
buscar estrictamente una palabra con regex

Hola comunidad como va todo

tengo un script que busca similitudes con palabras que yo tengo guardadas en mi sistema pero el problema es que para buscar esas palabras estoy usando un codigo que veo que se puede reemplazar con un match() y un regex solo que me genera problemas como el siguiente:

Código Javascript:
Ver original
  1. var text='hola soy :D :Daniel';
  2.  
  3. text.replace(/(\:D)/g, '😄')
  4.  
  5. console.log(text)// hola soy 😄 😄

y pues asi no es como yo quiero, quiero que si es exactamente :D la cambie, no que si tiene como inicio o intermedio

Muchas gracias :)
  #2 (permalink)  
Antiguo 30/08/2016, 12:18
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: buscar estrictamente una palabra con regex

parece que es esto lo que buscas
Cita:
var Reemplaza = {

patrones : [

{
patron : /\b\putada\b/gi,
reemp : 'fastido'
},

{
patron : /\b\mierda\b/gi,
reemp : 'corcholis'
}

],


parsea : function(txt) {

return Reemplaza.patrones.reduce(function(valor, regla) { return valor.replace(regla.patron, regla.reemp); }, txt);

}
};

function ReemplarPalabras(campo) {

campo.value = Reemplaza.parsea(campo.value);
}



<textarea onKeyup="ReemplarPalabras(this);"></textarea>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 30/08/2016 a las 12:24
  #3 (permalink)  
Antiguo 01/09/2016, 19:52
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: buscar estrictamente una palabra con regex

no funciona, osea si yo escribo "putadaHola" sale "fastido" y quiero que salga "fastidio" si se escribe "putada" y no "putadaHola"

es hacer un regex que sea estricto, osea no busque si la palabra comienza con cierta letras, si tiene la letra completa haga el replace
  #4 (permalink)  
Antiguo 02/09/2016, 04:25
 
Fecha de Ingreso: enero-2015
Mensajes: 205
Antigüedad: 9 años, 2 meses
Puntos: 18
Respuesta: buscar estrictamente una palabra con regex

Lo más sencillo es dividirlo en dos partes, primero hacer una función que compruebe que el substring está dónde tu quieres, y en el caso favorable que se aplique el Regex.
  #5 (permalink)  
Antiguo 02/09/2016, 05:24
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 10 meses
Puntos: 10
Respuesta: buscar estrictamente una palabra con regex

Hola @sonickseven, el patrón que te ha mostrado @IsaBelM funciona. Por ejemplo:

Código Javascript:
Ver original
  1. "Esto es una mierda sabes?".replace(/\b\mierda\b/gi, "caca");

Da como resultado:

Código Javascript:
Ver original
  1. "Esto es una caca sabes?"

En cambio:

Código Javascript:
Ver original
  1. "Esto es una mierdaGrande sabes?".replace(/\b\mierda\b/gi, "caca");

Da como resultado:

Código Javascript:
Ver original
  1. "Esto es una mierdaGrande sabes?"

PD: Esto empieza a oler mal
  #6 (permalink)  
Antiguo 02/09/2016, 06:16
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: buscar estrictamente una palabra con regex

Cita:
Iniciado por leugimsiul Ver Mensaje
Hola @sonickseven, el patrón que te ha mostrado @IsaBelM funciona. Por ejemplo:
sí funciona, pero no como el quiere. fijate que pretende eliminar cierta entrada en tiempo real, usease, con el evento keyup

cambia ha esto otro
Cita:
{
patron : /\b\putada\s/i,
reemp : 'fastido '
},

{
patron : /\b\mierda\s/i,
reemp : 'corcholis '
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 04/09/2016, 07:17
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: buscar estrictamente una palabra con regex

el problema mio es que ya tengo las palabras separadas, como tu lo haces esta bien (y) pero yo ya tengo una funcion que las separá entonces el "\s" me sobra y tu lo haces en el evento 'key' a lo cual también es bueno pero en este caso no me sirve porque yo o uso despues de que esa persona envia el texto. haber les resumo como es :) :

Cuando una persona termina de escribir y le da ENTER pues cojo todas las palabras y las separo en espacios, despues las busco el patrón en cada una de ellas y hago los cambios y ya despues de todos los cambios pues hay si uno las palabras con los cambios reemplazados
  #8 (permalink)  
Antiguo 05/09/2016, 11:36
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: buscar estrictamente una palabra con regex

Cita:
Iniciado por sonickseven Ver Mensaje
Cuando una persona termina de escribir y le da ENTER pues cojo todas las palabras y las separo en espacios, despues las busco el patrón en cada una de ellas y hago los cambios y ya despues de todos los cambios pues hay si uno las palabras con los cambios reemplazados
vaya eso es rizar el rizo. a la función has de pasarle la cadena completa

el primer patrón es válido

Cita:
<!DOCTYPE html>
<html dir="ltr" lang="es-es">
<head>
<script>

function reemp(f) {
console.log(f.elements[0].value);
f.elements[0].value = Reemplaza.parsea(f.elements[0].value);
console.log(Reemplaza.parsea(f.elements[0].value));
return false;
}


var Reemplaza = {

patrones : [

{
patron : /\brojo\b/gi,
reemp : 'RED'
},

{
patron : /\bblanco\b/gi,
reemp : 'WHITE'
}

],


parsea : function(txt) {

return Reemplaza.patrones.reduce(function(valor, regla) { return valor.replace(regla.patron, regla.reemp); }, txt);

}
};
</script>
</head>
<body>
<form name="f" onsubmit="return reemp(this);">
<textarea name="t">tengo unos pantalones rojos y un jersey blanco. tambien tengo un vaquero rojo y un cinturón blanco. hay un equipo de fútbol que viste de rojoyblanco</textarea>
<input type="submit" value="enviar">
</form>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #9 (permalink)  
Antiguo 06/09/2016, 00:57
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 10 meses
Puntos: 10
Respuesta: buscar estrictamente una palabra con regex

Cita:
Iniciado por sonickseven Ver Mensaje
Cuando una persona termina de escribir y le da ENTER pues cojo todas las palabras y las separo en espacios, despues las busco el patrón en cada una de ellas y hago los cambios y ya despues de todos los cambios pues hay si uno las palabras con los cambios reemplazados
Uff, me parece excesivamente rebuscada la solución, pero allá cada uno. Mi opinión es que simplemente apliques el regex a cada palabra que encuentres en un bucle, aunque yo lo haría al string completo.

Saludos!
  #10 (permalink)  
Antiguo 08/09/2016, 16:16
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: buscar estrictamente una palabra con regex

es que aparte de hacer ese reemplazo también busco otras cosas, por ejemplo URLs, palabras claves del sistema, imagenes del sistema puestas en un cadena o un link de youtube, no es solo cambiar con el replace, osea yo mire la función y es muy buena, pero aca necesito de esa forma, pero veo que no van con mi logica :) de todas formas gracias :D por el tiempo igual yo ya lo solucione de una forma pero es larga (text==''||text=='||text=='') que creo que se puede solucionar con regex
  #11 (permalink)  
Antiguo 12/09/2016, 10:04
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: buscar estrictamente una palabra con regex

parace que mi desconocimiento de regexp y el cambio de como funciona la FUNCION me hizo olvidar del proposito de este post: cambiar unas palabras estrictamente. y con \b funciona ok peeero como hago para que funcione con por ejemplo coaracteres especiales como @ , ( , * etc yo he leido que para esos se pone asi

\@ 0 \( , \* pero no me funciona con esto por ejemplo:

Código Javascript:
Ver original
  1. 'Hola amigos :)  como estan'.replace(/\b\:\)\b/gi, '��')//es una  carita feliz pero hay problemas de decodificaión creo

hace poco me di cuenta del error y de como uno se desvia del tema principal y nos enfocamos en defender nuestro punto de vista.

si alguién sabe le agradecería :D y ya con eso pondría fin a esta pregunta :D
  #12 (permalink)  
Antiguo 12/09/2016, 10:09
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: buscar estrictamente una palabra con regex

tube que escribirlo de nuevo porque arriba en el editor de respuestas genera error y parece que aca también :/ (lo del icono de una carita feliz en letra)

Etiquetas: regex
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:13.