【javascript】@hogehogeや#hogeやhttp://をリンクにする

前に作ったツイートの@やURLやハッシュタグをリンクにするjsのやつで

String.prototype.linkify_tweet = function() {
  var tweet = this.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&amp;%@!&#45;\/]))?)/,'<a href="$1" target="_blank">$1</a>');
  tweet = tweet.replace(/(^|\s)(@|@)(\w+)/g,'$1<a href="http://www.twitter.com/$3" target="_blank">@$3</a>');
  return tweet.replace(/(^|\s)#(\w+)/g, '$1<a href="http://search.twitter.com/search?q=%23$2" target="_blank">#$2</a>');
};
としていましたが、 “文字の繰り返しを表す正規表現演算子が不正です。”と出てしまう。 原因は? http://msdn.microsoft.com/ja-jp/library/cc391993.aspxにあったけど…

正規表現の検索パターンを作成するときに、パターン要素に不正な繰り返しが指定されています。たとえば、以下のパターンを見てください。

全角の「@」を消したら動いた。うーむむ?

String.prototype.linkify_tweet = function() {
  var tweet = this.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&amp;%@!&#45;\/]))?)/,'<a href="$1" target="_blank">$1</a>');
  tweet = tweet.replace(/(^|\s)(@)(\w+)/g,'$1<a href="http://www.twitter.com/$3" target="_blank">@$3</a>');
  return tweet.replace(/(^|\s)#(\w+)/g, '$1<a href="http://search.twitter.com/search?q=%23$2" target="_blank">#$2</a>');
};


Tags:

 
 
 

コメントをどうぞ