0
var value = "ID=advIcon1&CLASS=advIcon&PAGE=43&TOP=2%&LEFT=15%&WIDTH=20%&HEIGHT=10%&RSC=http://www.canon.com.hk/40th/index.html?source=seriesbanner&ICON=http://203.80.1.28/FlippingBook/Dev/Frontend/source/adv/tc_bn_314.jpg&ALT=Cannon Adv"

我想实现的是

&RSC=http://www.canon.com.hk/40th/index.html?source=seriesbanner

&RSC=http://www.canon.com.hk/40th/index.html?source#seriesbanner

&RSC替换和之间的所有“=”&ICON

value = value.replace (/&RSC=%[=]+%&ICON/,/&RSC=%[#]+%&ICON/); 

以上是我尝试过的代码,但无法正常工作,如何解决问题?谢谢

4

2 回答 2

2

我会这样做:

var value = "ID=advIcon1&CLASS=advIcon&PAGE=43&TO...";
var startIndex = value.indexOf("&RSC");
var endIndex = value.indexOf("&ICON");
var head = value.substring(0, startIndex);
var tail = value.substring(endIndex);
var body = value.substring(startIndex, endIndex);
var result = head + body.replace(/=/g, '#') + tail;

我认为尝试用一个疯狂的正则表达式来完成整个事情没有任何优势。

那只会使您的代码更难阅读且效率降低。

更好的是,让它成为一个你可以重复使用的函数:

// Replaces every occurrence of replaceThis with withThis in input between
// startPattern and endPattern.

function replaceCharactersBetween(input, startPattern, endPattern, replaceThis, withThis) {
    var startIndex = input.indexOf("startPattern");
    var endIndex = input.indexOf("endPattern");
    var head = input.substring(0, startIndex);
    var tail = input.substring(endIndex);
    var body = input.substring(startIndex, endIndex);
    var regex = new RegExp(replaceThis, 'g');
    return head + body.replace(regex, withThis) + tail;
}
于 2013-02-08T02:23:46.193 回答
0

尝试:

value = value.replace(/RSC=([^=]+)=([^=]+)/, 'RSC=$1#$2');

你也应该看看endoceURIComponent()

于 2013-02-08T02:40:55.547 回答