Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Задать длинну строки


Автор: Moid 23.1.2008, 11:14
Как записать это в одну строку:

Код

static bool MailValid2(string mailAddress)
        {
            //Regex m = new Regex(@"^([A-Za-z0-9-!#$%*/?|^{}`~&'+-=_]+@[A-Za-z0-9]+\.\w+)$");
            if (m.IsMatch(mailAddress))
            {
                Regex m1 = new Regex(@"^(.){1,64}$");
                bool b = m1.IsMatch(mailAddress);
                return m1.IsMatch(mailAddress);
            }
            return false;
        }



Пробовал так: 
Код

Regex m = new Regex(@"^([A-Za-z0-9-!#$%*/?|^{}`~&'+-=_]+@[A-Za-z0-9]+\.\w+){1,64}$");


и так:
Код

Regex m = new Regex(@"^([A-Za-z0-9-!#$%*/?|^{}`~&'+-=_]+@[A-Za-z0-9]+\.\w+)(.){1,64}$");

не работает.

Автор: Bishop 25.1.2008, 13:14
Moid, проверить длину строки можно без регулярных выражений
Код

static bool MailValid2(string mailAddress)
{
    Regex m = new Regex(@"^([A-Za-z0-9-!#$%*/?|^{}`~&'+-=_]+@[A-Za-z0-9]+\.\w+)$");
    if (mailAddress.Length > 64)
        return false;
    return m.IsMatch(mailAddress);
}

Автор: Moid 25.1.2008, 13:43
Нужно именно регулярными и в одном выражении.

Автор: Bishop 25.1.2008, 15:46
Moid, 
в одну строку можно и так записать smile:
Код

return mailAddress.Length < 64 && System.Text.RegularExpressions.Regex.IsMatch(mailAddress, @"^[a-zA-Z0-9\.\-_=]+@[a-zA-Z0-9\.\-_=]+\.[a-zA-Z0-9]+$");

А одним регекспом — только ограничивая длину отдельных частей, например:
Код

string pattern = @"^[a-zA-Z0-9\.\-_=]{1,48}@[a-zA-Z0-9\.\-_=]{1,10}\.[a-zA-Z0-9]{1,4}$";


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)