Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Фильтрация введённых символов

7
13 марта 2009 года
@pixo $oft
3.4K / / 20.09.2006
Многие наверняка сталкивались с задачей,когда надо проверить введённую строку на содержание в ней только определённых символов.Как пример–регистрация e-mail,когда в имени почтового ящика могут быть только латинские буквы,цифры и некоторые знаки
Какие решения вы предложите для "фильтрации базара"?:)
11
13 марта 2009 года
oxotnik333
2.9K / / 03.08.2007
шаблоны и регулярки
7
13 марта 2009 года
@pixo $oft
3.4K / / 20.09.2006
Неее,ответ не в таком виде подразумевался.Эти 2 слова не каждому что-то скажут
Желательно привести алгоритм(желающие могут привести код:))
1.6K
13 марта 2009 года
Vov4ick
476 / / 01.02.2007
Простейший вариант - последовательное сравнение каждого символа строки либо с массивом допустимых символов, если он сложный, либо проверка вхождения символа в диапазон допустимых, если это происходит быстрее.
341
14 марта 2009 года
Der Meister
874 / / 21.12.2007
Цитата: @pixo $oft
желающие могут привести код:)

Желаю:

Код:
using NUnit.Framework;
    using System.Text.RegularExpressions;

    [TestFixture]
    public class RegexTests
    {
        struct TestCase
        {
            public readonly string Input;
            public readonly bool ExpectedValue;

            public TestCase(string input, bool expectedValue)
            {
                Input = input;
                ExpectedValue = expectedValue;
            }

            public override string ToString()
            {
                var retval = string.Format(
                    "Input: {0} Expected: {1}",
                    Input,
                    ExpectedValue
                );
                return retval;
            }
        }

        [Test]
        public void TestEmail()
        {
            var regex = new Regex(@"^\w+\@\w+\.\w+\z");

            var testCases = new[]
            {
                new TestCase("mailaccount@mail.ru", true),
                new TestCase("mailaccount", false),
                new TestCase("mailaccount@firstleveldomain", false),
                new TestCase("12345@mail.ru", true),
                new TestCase("invalid!account@mail.ru", false),
                new TestCase("acc_with_underline@mail.ru", true)
                new TestCase("acc@mail.", false),
                new TestCase("acc@.ru", false),
                new TestCase("@mail.ru", false)
            };

            foreach (var testCase in testCases)
            {
                var isMatch = regex.IsMatch(testCase.Input);
                Assert.AreEqual(testCase.ExpectedValue, isMatch);
            }
        }
    }
Да здравствует велосипед :).
294
14 марта 2009 года
Plisteron
982 / / 29.08.2003
Цитата: @pixo $oft
Неее,ответ не в таком виде подразумевался.Эти 2 слова не каждому что-то скажут


Скажут. Вот что удалось нагуглить по "регулярные выражения e-mail":

Цитата:
В качестве первого примера, рассмотрим функцию на C++, которая проверяет, может ли заданная строка являться корректным адресом электронной почты:
 
Код:
#include <string>

#include <boost/regex.hpp>

bool can_be_email( const std::string & s ) {
        static const boost::regex e("[a-zA-Z0-9_\\.]+@([a-zA-Z0-9]+\\.)+[a-zA-Z]{2,4}");
        return boost::regex_match( s, e );
}

IMHO, всё не так уж сложно. Источник здесь

5
14 марта 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Plisteron
Скажут. Вот что удалось нагуглить

Надо было по форуму искать. :)

Был аналогичный фильтр мата (достаточно извращенный). Если всеже найду его у себя, закину.

7
21 марта 2009 года
@pixo $oft
3.4K / / 20.09.2006
На самом деле,тема создавалась с упором на то,что кто-то предложит своё решение,а не уже готовое(из библиотек).Не важно,на каком языке(поэтому и в "Общих вопросах")
В общем,у меня есть свой алгоритм решения этой задачи в исходниках.Просьба просмотреть и опробовать…и не ругать сильно,как-никак,я только учусь:)

Далее по поводу улучшения у меня есть вопросы,их задам позже.Благодарю за внимание
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог