Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2011, 18:21   #1
flower25
Новичок
Джуниор
 
Регистрация: 15.12.2011
Сообщений: 1
По умолчанию Регулярное выражение для константы цвета html

Помогите, пожалуйста, написать регулярное выражение определяющее является ли данная строчка шестнадцатиричным идентификатором цвета в HTML. Где #FFFFFF для белого, #000000 для черного, #FF0000 для красного и.т.д.

Пример правильных выражений:
#FFFFFF, #FF3421, #00ff00
Пример неправильных выражений:
232323, f#fddee, #fd2
flower25 вне форума Ответить с цитированием
Старый 16.12.2011, 00:24   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Threading;
using System.Text.RegularExpressions;

public class TestLambdaExpression
{
    public static void Main()
    {
        List<string> tests = new List<string>() { "#FFFFFF", "#12ABCD", "#FF3421", "#00ff00", "232323", "f#fddee", "#fd2", "FFFFFF", "AAAAAAA", "#ABCDEFGH", "#QQQQQQ", "#######" };
        tests.ForEach(e => Valid(e));
        Console.ReadLine();
    }

    static void Valid(string str)
    {
        Regex rx = new Regex("^#[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]"); 
        if (str.Length == 7 && rx.IsMatch(str.ToUpper()))
            Console.WriteLine(str + " is Valid");
        else
            Console.WriteLine(str + " is NOT Valid");
    }

    
}
Типо того

Последний раз редактировалось Guy; 16.12.2011 в 00:27.
Guy вне форума Ответить с цитированием
Старый 16.12.2011, 08:23   #3
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Зачем такое длинное выражение?
Код:
Regex rx = new Regex(@"^#(?i)(\d|[A-F]){6}$");
тогда не надо на длину проверять и в верхний регистр приводить.
Скорее всего только trim строки нужно будет сделать перед проверкой, как обычно.
Или вариант если строки могут содержать пробелы но без trim.
Код:
Regex rx = new Regex(@"^\s*#(?i)(\d|[A-F]){6}\s*$");
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.

Последний раз редактировалось Lasur; 16.12.2011 в 08:42.
Lasur вне форума Ответить с цитированием
Старый 16.12.2011, 10:35   #4
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Ну вот ) Я не так часто с регулярками сталкиваюсь )
Guy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение flame33 PHP 0 27.09.2011 12:56
регулярное выражение для создания массива aferistz PHP 1 28.03.2011 11:40
Регулярное выражение Arassir PHP 4 16.03.2011 09:42
Регулярное выражение для удаления английских слов из текста Se0mashines PHP 1 30.10.2010 22:53
Регулярное выражение! Evgen1984 Общие вопросы .NET 4 14.09.2010 19:44