我有一个模式可以在查询字符串中找到匹配项:
'url.com/foo/bar?this=that&thing=another'.replace(/(thing=)([^&]*)/, '$1test')
我希望能够做的是使用变量值作为匹配的参数:
'url.com/foo/bar?this=that&thing=another'.replace('/(' + key + '=)([^&]*)/', '$1test')
[edit]以下是代码使用方式的上下文:
GetSrcParam: function(key, value) {
var newSrc = $(this._image).attr('src'),
pattern = '(' + key + '=)([^&]*)';
if (newSrc.match(pattern) == null)
newSrc += '&' + key + '=' + value;
else
newSrc = newSrc.replace(newSrc, '$1' + value);
return newSrc;
}
但它没有按预期工作 - 任何人都可以帮忙吗?
答案 0 :(得分:3)
如果您选择从字符串构造正则表达式,则需要删除分隔符(但如果正则表达式包含任何反斜杠,则需要加倍任何反斜杠)。尝试
myregex = new RegExp('(' + key + '=)([^&]*)')
'url.com/foo/bar?this=that&thing=another'.replace(myregex, '$1test')
您是否知道这也会与thing=another
中的url.com/foo/bar?something=another
相匹配?为避免这种情况,请添加单词边界锚:
myregex = new RegExp('(\\b' + key + '=)([^&]*)')