代码之家  ›  专栏  ›  技术社区  ›  Trip

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

  •  8
  • Trip  · 技术社区  · 14 年前

    <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文本放入我的文本区域,而不是实际执行该函数。 这可能是因为我是从requre 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 回复  |  直到 14 年前
        1
  •  9
  •   user113716    14 年前

    你应该不用正则表达式就可以过得去。

    例子: 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 );
    });
    
        2
  •  1
  •   Carls Jr.    14 年前

    你可能想试试这个函数,如果你不确定这个词是朋友还是敌人或者其他什么,只要它是你想替换的第二个词,这个函数就可以工作。 在我的示例中,我添加了一个调用脚本的链接。不要忘记包括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>
    
        3
  •  0
  •   Vinz    14 年前

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

    \w+\s(\w+)
    

    不过,我更喜欢帕特里克的解决方案。。。:)