如何用jQuery和Regex选择第二个单词..?

时间:2010-11-09 13:28:22

标签: jquery regex

假设正则表达式是最好的方法,我想选择第一个单词:

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

并用它来替换此div标签中的第二个单词:

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

这样最终结果等于:

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

更新

这是我实际代码的混合体。我注意到,当它运行时,它只是将jquery文本放入我的文本区域而不是实际执行该函数。 这可能是因为我从需要val()的输入中提取而不是像上面示例所示的div标签中的文本。

 $(".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);
    });
 });

这会创建一个用它写的文本区域

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

3 个答案:

答案 0 :(得分:9)

你应该能够在没有正则表达式的情况下过关。

示例: http://jsfiddle.net/2R5kA/

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

如果名称前面可能有一些前导空格,请先使用jQuery's $.trim() method

示例: 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 :(得分:1)

你可能想尝试这个功能,如果你不确定这个单词是朋友还是敌人还是其他东西,只要它是你要替换的第二个单词就行了。 只需在您的页面中调用此javascript函数即可... 在我的示例中,我添加了一个调用脚本的链接。不要忘记包含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>

答案 2 :(得分:0)

你可以使用这个正则表达式得到第二个单词,假设你已经使用jQuery进入div

\w+\s(\w+)

大括号内的小组会给你第二个字。

我喜欢使用拆分更好的patricks解决方案虽然......:)