2010-11-09 28 views
8

expresiones regulares Suponiendo es la mejor manera de hacer esto, me gustaría seleccionar la primera palabra de:¿Cómo seleccionar la segunda palabra con jQuery y Regex ..?

<div class="name">Bob Marley</div> 

y usarlo para reemplazar la segunda palabra en esta etiqueta div:

<div class="message">Hey friend, how are you?</div> 

por lo que el resultado final es igual a:

<div class="message">Hey Bob, how are you?</div> 

actualización

Este es un popurrí de mi código real aquí. Me di cuenta de que cuando se ejecuta, simplemente coloca el texto jquery en mi área de texto en lugar de realizar la función. Esto es probablemente porque estoy extrayendo entradas que requieren val() y no texto en etiquetas div como sugieren los ejemplos anteriores.

$(".me_signup .name").bind("mouseup keyup", function(){ 
    $(this).siblings('.message').text(function(i,txt) { 
     var name = $(this).val().split(' ')[0]; 
     return txt.replace('friend', name); 
    }); 
}); 

Esto crea un área de texto con este escrito en él

function (i, txt) { 
    var name = $(this).val().split(" ")[0]; 
    return txt.replace("friend", name); 
} 

Respuesta

9

Usted debe ser capaz de salir adelante sin una expresión regular.

Ejemplo:http://jsfiddle.net/2R5kA/

$('div.message').text(function(i,txt) { 
    var name = $('div.name').text().split(' ')[ 0 ]; 
    return txt.replace('friend', name); 
}); 

Si hay una posibilidad de que puede haber algunos espacios iniciales antes del nombre, a continuación, utilizar jQuery's $.trim() method primero.

Ejemplo:http://jsfiddle.net/2R5kA/1/

$('div.message').text(function(i,txt) { 
    var name = $.trim($('div.name').text()).split(' ')[0]; 
    return txt.replace('friend', name); 
}); 
+1

'return txt.replace (/ [\ w] + /, '' + nombre);' para reemplazar * segunda palabra *, no solo "amigo". – jensgram

+0

@jensgram - Muy cierto, aunque creo que el punto aquí es que la segunda palabra será "amigo", ya que es un saludo genérico. – user113716

+0

también puede usar expresiones regulares en split: str.split (/ \ s/g), y agregar más símbolos para dividir por –

0

Usted podría utilizar esta expresión regular para obtener la segunda palabra, suponiendo que ya se llegó a la div usando jQuery:

\w+\s(\w+) 

El grupo dentro de las llaves da tu la segunda palabra

me gusta la solución de los patricks del uso de la división mejor sin embargo ... :)

1

Es posible que desee probar esta función, esto funciona si no está seguro de si la palabra es amigo o enemigo o alguna otra cosa durante el tiempo que es la segunda palabra que querías reemplazar. Simplemente llame a esta función de JavaScript dentro de su página ... En mi ejemplo, agregué un enlace para llamar al script. No te olvides de incluir la biblioteca jquery.

<div class="name">Bob Marley</div> 
<div class="message">Hey friend, how are you?</div> 
<a onclick="demoMatchClick()">Change</a> 

<script type="text/javascript"> 
    function ReplaceSecondWord() { 

     var strRegExp = new RegExp('Hey (.+), how are you?'); 
     var strCurrentText = $(".message").html(); 
     var strName = $(".name").html().split(" "); 

     strCurrentText = strCurrentText.replace(strCurrentText.match(strRegExp)[1], strName[0]); 

     $(".message").html(strCurrentText); 

    } 

</script> 
+1

¡Muchas gracias por el voto! :) –

Cuestiones relacionadas