2017-02-03 4 views
0

複数の電子メールアドレスを含む文字列があります。文字列の各アドレスに対して<a href='mailto: [EMAIL-HERE]'></a>で検索して折り返したいと思います。Jqueryは文字列から複数の電子メールを取得します

私はRegexpがこれを達成する最も良い方法だと理解します。私はほとんどこれを実行し、ここで別のポストからのコードのビットが見つかりました:

function checkIfEmailInString(text) { 

     var regExp = /(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/; 
     var matches = regExp.exec(text); 

     return matches; 
    } 

をしかし、私は、文字列でマッチを見つけたら、私は<a>包まれた同等とメールアドレスを交換したいです。私が言ったように、文字列内に複数の電子メールアドレスがあり、電子メールが折り返された文字列全体を返すケースを処理する必要があります。助言がありますか?

UPDATE

例文字列:

var string = "john ([email protected]) deals with the fruit and peter [email protected] is the secretary of information" 
+2

入力文字列の例を挙げてください。 – Maxime

答えて

1

チェックこれはあなた

var str = "john ([email protected]) deals with the fruit and peter [email protected] is the secretary of information"; 

str = str.replace(/[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+.[a-zA-Z0-9-.]+/gi, function(matched){ 
    return '<a href="mailto:'+matched+'">'+matched+'</a>'; 
}); 

https://jsfiddle.net/1hjLpdfm/2/

UPDATEのために働く場合:私はあなたが提供する正規表現が機能していることに気づきました同様に、あなたj最後にグローバルフラグを逃してください

var regExp = /(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g; 
+0

私が望むように動作します!ありがとう。そうでなければ "undefined"として戻ってくるので、私はコード内で値を少しだけ編集して、より多くのpublic変数に保持しなければなりませんでした。しかし、それ以外はうまくいっているようです! –

関連する問題