【问题标题】:javascript string replace with RegExpjavascript字符串替换为RegExp
【发布时间】:2013-04-17 13:02:25
【问题描述】:

我遇到了 javascript RegExp 的问题。当我点击按钮时,我想用textbox 值替换a.href。但是,我不想替换整个字符串,只想找到并替换那些与我的正则表达式完全匹配的字符串。这是我的代码

$(document).ready(function(){
    $('#btnRun').click(function(){
        var str = encodeURIComponent($('#mydata').val());
        var regExp = new RegExp('\\b' +encodeURIComponent( $('a').html()) + '\\b','gi');
        $('a').attr('href',$('a').attr('href').replace(regExp,str));
    });
});

这是我的测试代码 http://jsfiddle.net/4uAp5/1/

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    不要认为你需要一个正则表达式来做到这一点。此代码应完成您所描述的:

    $('a').attr('href',$("#mydata").val());
    

    另外值得注意的是,您定位链接的方式 - $('a') - 将选择页面上的每个链接...

    【讨论】:

    • 这将替换整个href 值,但他显然只想替换匹配的部分。
    【解决方案2】:

    \\b 不匹配,因为 href 值已编码并且结果(在此特定示例中)为 cMyTest1c 不满足 \\b。根据具体情况有多种解决方案。一种是在使用正则表达式之前先在href上使用decodeURI,然后再对其进行编码(尽管可能不需要)。

    http://jsfiddle.net/4uAp5/4/

    【讨论】:

    • 经过我的测试,Unicode字符如汉字有一些问题。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2020-01-13
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多