1

私はこのjqueryプラグインを使用しています:https ://github.com/maranomynet/linkify/blob/master/1.0/jquery.linkify-1.0.js

このREGEXプラグインを使用して、@usernamesと#hashtagsをリンクしようとしています...

  linkify.plugins = {
  tUser: {
      re: /(^|\s)@(\w+)/gi,
      tmpl: '$1@<a href="http://domain.com/$2">$2</a>'
  },
  tHashtag: {
      re: /(^|["'(]|&lt;|\s)(#.+?)((?:[:?]|\.+)?(?:\s|$)|&gt;|[)"',])/gi,
      tmpl: function (match, pre, hashTag, post) {
            return pre+'<a href="http://domain.com/search.php?q='+ encodeURIComponent(hashTag) +'">'+hashTag+'</a>'+post;
      }
  }
};

...しかし、私は奇妙な組み合わせでいくつかの問題を抱えています:

太字では、リンクする必要があるがリンクしないもの)

#hash #hash)(#hash)/ #hash

@ user @ user)(@ user)/ @ user

このバリエーションに一致するように正規表現を修正するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

3

私はlinkifyにあまり詳しくありませんが、これを試してみます。

最初の正規表現(@user)の問題は、先頭の空白または改行が必要なため、一致しないことです。これがその(^|\s)一部です。#hash正規表現に関しては、まあ...それは不必要に複雑に思えます。次のことを試してください。

linkify.plugins = {
  tUser: {
    re: /(^|\s|[^\w\d])@(\w+)/gi,
    tmpl: '$1@<a href="http://domain.com/$2">$2</a>'
  },
  tHashtag: {
    re: /(^|\s|[^\w\d])#(\w+)/gi,
    tmpl: function (match, pre, hashTag) {
            return pre+'<a href="http://domain.com/search.php?q='+
                   encodeURIComponent(hashTag) +'">#'+hashTag+'</a>';
    }
  }
};

これは、 @ userまたは#hashの前に改行、空白、または単語や数字以外の文字(az、AZ、0〜9ではない)が付いている限り、一致します。したがって、括弧は邪魔になりませんが、ほとんどの電子メールアドレスも取得されません。

リンクされたハッシュタグの検索にもハッシュ記号が含まれないことに注意してください。

于 2011-06-01T23:50:48.873 に答える