elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  expresión regular que sustituye una palabra por el valor de una variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: expresión regular que sustituye una palabra por el valor de una variable  (Leído 1,648 veces)
Ali Baba


Desconectado Desconectado

Mensajes: 310


Ver Perfil WWW
expresión regular que sustituye una palabra por el valor de una variable
« en: 17 Julio 2018, 23:22 pm »

Tengo un chat, y quisiera que al colocar !test salga el valor de una variable, que en este caso es el nombre de usuario que la persona eligió para registrarse. Esto lo intento hacer con jQuery.

Código
  1. function unescape2(m){
  2.    m=unescape(m);
  3.    m=m.replace(/</g,'&lt;');
  4.    m=m.replace(/>/g,'&gt;');
  5.  
  6. m=m.replace(/!code(.*)/ig, function(m, gg) {
  7.    if (gg == "" ) return m;
  8.    else return "<div style=\"font-family:monospace; color:#fff; display:inline-block; padding:4px; background-color:#000;\">" + gg + "</div>";
  9. });
  10.  
  11. m=m.replace(/!anc(.*)/ig, function(m, gg) {
  12.    if (gg == "" ) return m;
  13.    else return "<div class=\"anunciacion oficial\">" + gg + "</div>"
  14. });
  15.  
  16. m=m.replace(/#meneo(.*)/ig,function(m,gg){
  17. if(gg=='') return m;
  18. return "<div style='display:inline-block;' class='shke'>"+gg+"</div>"
  19. });
  20.  
  21. m=m.replace(/#uppi(.*)/ig,function(m,gg){
  22. if(gg=='') return m;
  23. return "<div style='-webkit-transform:rotate(-180deg); -moz-transform:rotate(-180deg); -o-transform:rotate(-180deg); transform:rotate(-180deg); display:inline-block;'>"+gg+"</div>"
  24. });
  25.  
  26.    return m ;
  27. }

vi por internet esa funcion, que lo que hace es que al colocarle cualquiera de los comandos expresados en la expresión regular, se va agregar alguna clase o estilo a la cadena de texto que le sigue, creando cualquier efecto, quiero hacer lo de sustituir una palabra con el valor de una variable, que en este caso es

Código
  1. var user_nick = $('#log_us').val();

Eso recoge el valor que obtiene el imput con id log_us, que a su vez es el nombre de usuario de la persona. Entonces quisiera que al poner en el chat Hola !test salga el nombre de usuario de la persona que lo lee y no el comando !test


En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: expresión regular que sustituye una palabra por el valor de una variable
« Respuesta #1 en: 18 Julio 2018, 16:30 pm »

Entiendo, corrígeme si me equivoco, que lo que quieres es sustituir una palabra clave según se escriba por un valor. De ser así, simplemente tienes que coger el evento de pulsar tecla (cuando suelta la tecla) y ahí haces el replace.

Ejemplo:
https://codepen.io/WhiteSkull/pen/KBgdZe

Este tipo de cosas es mejor haciéndolas sin JQuery porque no requiere un código complejo y a efectos de rendimiento es lo mejor.


« Última modificación: 18 Julio 2018, 16:32 pm por srWhiteSkull » En línea

Ali Baba


Desconectado Desconectado

Mensajes: 310


Ver Perfil WWW
Re: expresión regular que sustituye una palabra por el valor de una variable
« Respuesta #2 en: 19 Julio 2018, 04:09 am »

No, porque eso lo cambia antes de que se envíe, y yo quiero que lo cambie una vez que ya esté el mensaje escrito.

Código
  1. m=m.replace(/!anc(.*)/ig, function(m, gg) {
  2.    if (gg == "" ) return m;
  3.    else return "<div class=\"anunciacion oficial\">" + gg + "</div>"
  4. });

la linea que hace el segundo return, es el mensaje que se muestra en pantalla, lo que necesito es la expresión regular que haga el cambio. El parametro gg es el mensaje del usuario y el m es el comando
En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: expresión regular que sustituye una palabra por el valor de una variable
« Respuesta #3 en: 19 Julio 2018, 07:10 am »

No, porque eso lo cambia antes de que se envíe, y yo quiero que lo cambie una vez que ya esté el mensaje escrito.

Código
  1. m=m.replace(/!anc(.*)/ig, function(m, gg) {
  2.    if (gg == "" ) return m;
  3.    else return "<div class=\"anunciacion oficial\">" + gg + "</div>"
  4. });

la linea que hace el segundo return, es el mensaje que se muestra en pantalla, lo que necesito es la expresión regular que haga el cambio. El parametro gg es el mensaje del usuario y el m es el comando

Bueno, si estamos hablando de javascript, el primer argumento 'm' no es necesario, y el segundo argumento es la cadena que coincide con la expresión regular.

Incluso ese if (gg == "") return m sobraría, ya que de no encontrar una cadena que se ajuste a la expresión regular devolvería el mismo valor sin modificar.

En cuanto a realizar el reemplazo cuando se 'envíe' tendría que ser por medio de algo que ejecute la función y creo que mi sugerencia de usar algún evento es la adecuada, y más si piensas enviar la entrada al pulsar ENTER por ejemplo porque eso de usar una expresión regular para que sustituya la cadena automáticamente no le veo sentido sinceramente.

Usar una función en el replace() es por si pretendes transformar las cadenas que se ajusten a la coincidencia descrita en la expresión regular. Por ejemplo si quieres que las ponga en mayúsculas o quieres asignarles un estilo, con lo cual ya no usarías un input sino un div o un textarea.

En resumen, la expresión regular es un conjunto de reglas que se usan para buscar cadenas que se ajustan a estas. En tú caso para que se aplique a toda la cadena de la entrada debería ser /!test/g . La g es para indicar que no sólo quieres reemplazar la primera coincidencia, sino todas las que se encuentren en la entrada.



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Expresión regular « 1 2 3 »
PHP
IWKY 29 19,559 Último mensaje 25 Enero 2010, 23:57 pm
por ~ Yoya ~
Verificar y recolectar valor de expresion regular
PHP
Shell Root 2 1,959 Último mensaje 29 Mayo 2010, 18:50 pm
por Shell Root
Expresion regular en Perl « 1 2 »
Scripting
bdoX 17 9,798 Último mensaje 16 Enero 2012, 16:30 pm
por explorer
[python] expresión regular con or |
Scripting
Kase 2 3,546 Último mensaje 17 Enero 2012, 17:21 pm
por Kase
Expresion Regular
Desarrollo Web
SistemasSures 2 2,096 Último mensaje 19 Febrero 2018, 20:39 pm
por pangeasi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines