0

.NET 3.5 を実行している開発マシンに次の正規表現があり、設計どおりに動作します。ただし、テスト環境 (.NET 2.0 を実行している) に展開すると、正しく動作せず、常に false を返すようです。犯人が誰であるか知っている人はいますか?ありがとう

using System.Text.RegularExpressions;

protected void emailContactCheck(object source, ServerValidateEventArgs args)
{
  string[] allContacts = this.Contacts.InnerText.ToString().Split(";,".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  Regex rx = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+"
                    + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
                    + @"((\[[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,}))$", RegexOptions.IgnoreCase);
  foreach (String contact in allContacts)
  {
    if (!rx.IsMatch(contact.Trim()))
    {
      args.IsValid = false;
      return;
    }
  }
  args.IsValid = true;
}
4

2 に答える 2

0

regular-expressions.infoによると、.NET 2.0 と 3.x の間で正規表現サポートに違いはないため、問題はおそらく正規表現エンジンにはありません。

于 2009-09-23T13:37:09.810 に答える
0

開発マシンの .Net バージョンも .Net 2.0 に設定しようと思います。プロジェクトのビルド プロパティで実行できます。テスト/本番システムと同じバージョンを常に使用する必要があります。

次に、.Net 2.0 を実行している開発マシンでも問題を再現できるかどうかを確認できます。

于 2009-09-23T13:32:54.730 に答える