0

javascriptとregexを使用してURLのサブストリングを置き換えようとしています。

myurl.com/?page_id=2&paged=2 

になります

myurl.com/?page_id=2&paged=3

これは機能していないように見える私のコードです:

nextLink = 'myurl.com/?page_id=2&paged=2'
nextLink = nextLink.replace(/\/paged\=\/[0-9]?/, 'paged='+ pageNum);

私はここで何が間違っているのですか?正規表現は初めてです。

4

7 に答える 7

2

一致するように指示していますが、文字列には/pagedありません/paged。また、[0-9]?おそらくあなたが数字に望むものではありません。これを試して:

nextLink.replace(/\&paged=[0-9]+/, 'paged=' + pageNum);

&pageid=...これは、指定された文字列(...1つ以上の数字のシリーズ)を置き換えるように指示します。

于 2012-11-03T17:25:01.027 に答える
1

あなたの:

nextLink = nextLink.replace(/\/paged\=\/[0-9]?/, 'paged='+ pageNum);

私の:

nextLink = nextLink.replace(/&paged=[0-9]?/, 'paged='+ pageNum);

つまり\/、あなたが意味したときに書いた&。また、何らかの理由で数字の前に書いた。そして、あなたは逃げる必要はありません=

于 2012-11-03T17:24:43.773 に答える
1

をエスケープする必要はありません=。また、サンプルURLに存在しない、一致する追加のスラッシュがいくつかあります。それらがなければ、それは機能するはずです:

nextLink = nextLink.replace(/[?&]paged=[0-9]?/, 'paged='+ pageNum);
于 2012-11-03T17:23:38.703 に答える
1

優れたURI.jsライブラリを使用できるのに、なぜ正規表現を使用するのですか?

URI("myurl.com/?page_id=2&paged=2")
    .removeQuery("paged")  // remove so we don't have a duplicate
    .addQuery("paged", pageNum)
    .toString();

あなたは逃げることを心配する必要はありませんURI.js、あなたのためにすべてをします。

于 2012-11-03T17:33:41.680 に答える
1

コールバック関数を使用します。

var r = new RegExp("paged=(\\d+)");
s = s.replace(r, function($1, $2){ return "paged=" + (parseInt($2, 10) + 1); });

このデモを参照してください。

于 2012-11-03T17:36:38.840 に答える
0

スラッシュが多すぎます。\/そこにないリテラルスラッシュと一致させようとします:

nextLink = nextLink.replace(/paged=[0-9]?/, 'paged='+ pageNum);

ただし、JavascriptでURLを解析して再構築するためのより良い方法があるはずだと思います。

于 2012-11-03T17:22:53.253 に答える
0

これは、正規表現を使用しないソリューションです。

var url ="myurl.com/?page_id=2&paged=2" , pageNum=3;
url = url.split("paged=")[0]+"paged="+pageNum;

デモ

于 2012-11-03T17:28:48.483 に答える