2011-12-28 20 views
2

リンクをプレーンテキスト形式でhtml形式に置き換えたいと考えています。regexを使ってテキストをconditionに置き換えるには?

しかし、私は元のリンクに存在しない場合は、新しい置換のために接頭辞http://の前に追加する方法がわかりません。

var text  = "google.com and http://google.com"; 
var pattern  = /(\b((https?)\:\/\/)?[A-Za-z0-9]+\.(com|net|org))/ig; 
text   = text.replace(pattern,"<a href='$1'>$1</a>"); 

は私が意味するもの:

  1. 場合:http://google.com<a href="http://google.com">http://google.com</a>
+1

ちょうどあなたが知っている.. 'www.google.com'はあなたの正規表現によって処理されません –

+0

私はちょうど私の質問を簡単にしたいと思っています。 :D – vietean

答えて

3

使用overload of String.replace that takes a functionを置き換えられます:場合google.com<a href="http://google.com">google.com</a>

  • を置き換えられます

    var text = "google.com and http://google.com"; 
    var pattern = /(\b((https?)\:\/\/)?[A-Za-z0-9]+\.(com|net|org))/ig; 
    
    text = text.replace(pattern, function (str, p1) 
    { 
        var addScheme = p1.indexOf('http://') === -1 
            && p1.indexOf('https://') === -1; 
    
        return '<a href="' + (addScheme ? 'http://' : '') + p1 + '">' + p1 + '</a>'; 
    }); 
    
    // text is: 
    // '<a href="http://google.com">google.com</a> and <a href="http://google.com">http://google.com</a>' 
    
  • +0

    そして@parapura rajkumarは正しいです。正規表現は 'www.google.com'(実際にはサブドメイン)を処理しないので、修正することができます。 –

    関連する問題