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

文字列から正規表現を作成する場合は、区切り文字を削除する必要があります(ただし、正規表現にバックスラッシュが含まれている場合は、バックスラッシュを2倍にする必要があります)。試す

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 + '=)([^&]*)')
于 2011-04-06T11:44:49.210 に答える