3

我有一个模式可以在查询字符串中查找匹配项:

'url.com/foo/bar?this=that&thing=another'.replace(/(thing=)([^&]*)/, '$1test')

我想做的是使用变量值作为参数来匹配:

'url.com/foo/bar?this=that&thing=another'.replace('/(' + key + '=)([^&]*)/', '$1test')

[编辑] 以下是如何使用代码的上下文:

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;
        }

但它没有按预期工作 - 任何人都可以帮忙吗?

4

1 回答 1

3

如果您选择从字符串构造正则表达式,则需要删除分隔符(但如果您的正则表达式包含任何反斜杠,则需要将任何反斜杠加倍)。尝试

myregex = new RegExp('(' + key + '=)([^&]*)')
'url.com/foo/bar?this=that&thing=another'.replace(myregex, '$1test')

你知道这也会匹配thing=anotherurl.com/foo/bar?something=another?为避免这种情况,请添加单词边界锚:

myregex = new RegExp('(\\b' + key + '=)([^&]*)')
于 2011-04-06T11:44:49.210 回答