文字列の電子メールを検出するためにC#でRegexを使用し、次にmailtoパラメータでアンカータグを付けてクリック可能にします。しかし電子メールが既にアンカータグに入っている場合、正規表現はアンカータグ内の電子メールを検出し、次のコードは別のアンカータグをその上に置きます。 Regexに既にアンカータグにある電子メールを避ける方法はありますか?テキスト内の電子メールを検出するための正規表現
string sRegex = @"([\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?)";
Regex Regx = new Regex(sRegex, RegexOptions.IgnoreCase);
とサンプルテキストは次のとおり:
C#での正規表現コードが
string sContent = "ttt <a href='mailto:[email protected]'>[email protected]</a> abc [email protected]";
と所望の出力である:ここでだから
"ttt <a href='mailto:[email protected]'>[email protected]</a> abc <a href='mailto:[email protected]'>[email protected]</a>";
、全体のポイントRegexは、アンカータグの中にないか、既にクリック可能で、どちらも有効ではない有効な電子メールだけを検出する必要があるということですアンカータグ内のアンカータグのhref値である必要があります。
上記のRegexは、望ましくないテキストの可能なすべての電子メールを検出しています。
こんにちは@zapthedingbatを動作するはずです、私はあなたのコードを試してみましたが、まだ3通のメールがコンピュータに試してみてください、それはあなただけone.can検出する必要があります誘い込む検出されましたか?私はプログラミングの新人です。私はVisual Studioエディタでのみコピーしてテストすることができます。あなたの正規表現は上記のサンプル・テスト・テキストで3つのマッチを検出しています。 –