0

わかりました。何が問題なのかわかりませんが、複数のURLの一部を見つけて置き換えようとしています。

基本的に、自分のサイトに動的に追加されているURLがいくつかあります。すべてに「newsLink」のクラスがあり、一部のリンクはgoogle.docsビューアをプルアップしているので、それを削除する必要があります。

これまでの私のコードは次のとおりです。

$('a.newsLink').each(function(){
var lnk = $('a.newsLink').attr();
var re = new RegExp("http://docs.google.com/viewer?url=","g");
lnk.replace(re, "");
});

リンクは次のようになります。

<a href='http://docs.google.com/viewer?url=myHomePage.pdf' class='newsLink' target='_blank'>

リンクが次のようになるように、最初の部分を削除したいと思います。

<a href='http://myHomePage.pdf' class='newsLink' target='_blank'>

とにかく、これまでのところ運がない...誰か助けてくれませんか。

4

2 に答える 2

2

まず、ループ内ですべてのリンクを再度取得します。次に、属性を取得しようとしますが、どれを指定しませんでした。最後にreplace、戻り値を何にも割り当てずに使用しようとします。

これはあなたのコードがどうあるべきかです:

$('a.newsLink').each(function(){
    var lnk = this.href;
    this.href = lnk.replace("http://docs.google.com/viewer?url=", "");
});

注:myHomePage.pdfプロトコルなしで、たとえばリンクを作成することを想定しています。

于 2012-05-14T23:57:53.750 に答える
1

必要な正規表現はです。

http:\/\/docs\.google\.com\/viewer\?url=(.+)

まず、これはすべての正規表現文字をエスケープします。この場合\、、、.および?。すべての文字((.+))に一致するグループを使用してドキュメントをキャプチャしています。

したがって、これまでのコードは次のようになります。

$('a.newsLink').each(function(){
    var lnk = this.href;
    var re = /http:\/\/docs\.google\.com\/viewer\?url=(.+)/g
    this.href = lnk.replace(re, "");
});

今、私たちはそのようなグループを取得します。

var match = re.exec(lnk);

これにより、一致の配列が返されます。これで、ドキュメントはに保存されmatch[1]ます。したがって、最終的なコードはになります。

$('a.newsLink').each(function(){
    var lnk = this.href;
    var re = /http:\/\/docs\.google\.com\/viewer\?url=(.+)/g
    this.href = (re.exec(lnk))[1];
});
于 2012-05-15T00:03:52.667 に答える