Рубрики
Без рубрики

Шестнадцатеричный цветовой код регулярного выражения Java

Мы можем использовать шаблон регулярного выражения `^#([a-FA-F0-9]{6}|[a-fa-F0-9]{3})$`, чтобы соответствовать шестнадцатеричному цветовому коду, #FFF или #FFFFFF.

В этой статье показано, как использовать регулярное выражение для проверки шестнадцатеричного цветового кода.

Регулярное выражение для шестнадцатеричного цветового кода.

  ^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$

Объяснение регулярного выражения

  ^                 # start of the line
  #                 # start with a number sign `#`
  (                 # start of (group 1)
    [a-fA-F0-9]{6}  # support z-f, A-F and 0-9, with a length of 6
    |               # or
    [a-fA-F0-9]{3}  # support z-f, A-F and 0-9, with a length of 3
  )                 # end of (group 1)
  $                 # end of the line

1. Шестнадцатеричный формат цветового кода.

В Интернете мы можем использовать триплет RGB или шестнадцатеричный триплет (шестнадцатеричный цветовой код) для представления цветов на веб-странице. Для шестнадцатеричного цветового кода существует два формата: стандартный шестнадцатеричный триплет и сокращенный шестнадцатеричный формат, оба формата начинаются со знака ведущего числа # .

1.1 Шестнадцатеричная форма триплета Шестнадцатеричный триплет или стандартный шестнадцатеричный цветовой код использует шестизначную (шестнадцатеричную) форму для представления цвета. Для примеров:

  #000000
  #FFFFFF
  #808080
  #8A2BE2

Для #8A2BE2 первый шестнадцатеричный 8A представляет красное значение, второй 2B представляет зеленое значение, а третий E2 представляет синее значение.

1.2 Сокращенный Шестнадцатеричный Формат Сокращенный шестнадцатеричный код использует трехзначную (шестнадцатеричную) форму для обозначения цвета. Идея состоит в том, чтобы просто удвоить каждую цифру, чтобы получить вышеупомянутый шестнадцатеричный формат триплета. Для примеров:

  #000
  #FFF
  #09C

Для #000 он станет #000000 . Для #09C , он станет #0099CC .

Прочитайте приведенный ниже синтаксис CSS; оба представляют один и тот же цвет.

  p   { color: #000;    }   /* black color, hex triplet format */
  h1  { color: #000000; }   /* same color as above, shorthand hex format */

Цвет полотна Для получения дополнительной информации, пожалуйста, прочтите это Википедия – Веб-Цвет .

2. Регулярное выражение Java для проверки шестнадцатеричного цветового кода

Ниже приведен пример регулярного выражения Java для проверки шестнадцатеричного цветового кода в стандартных шестнадцатеричных триплетных и сокращенных форматах.

package com.mkyong.regex.hex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HexValidatorWebColor {

    private static final String HEX_WEBCOLOR_PATTERN
            = "^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$";

    private static final Pattern pattern = Pattern.compile(HEX_WEBCOLOR_PATTERN);

    public static boolean isValid(final String colorCode) {
        Matcher matcher = pattern.matcher(colorCode);
        return matcher.matches();
    }

}

3. Тесты для шестнадцатеричного цветового кода регулярного выражения.

Ниже приведены модульные тесты для проверки списка допустимых и недопустимых шестнадцатеричных цветовых кодов.

package com.mkyong.regex.hex;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;

import java.util.stream.Stream;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class HexValidatorWebColorTest {

    @ParameterizedTest(name = "#{index} - Run test with web color = {0}")
    @MethodSource("validWebColorProvider")
    void test_color_regex_valid(String color) {
        assertTrue(HexValidatorWebColor.isValid(color));
    }

    @ParameterizedTest(name = "#{index} - Run test with web color = {0}")
    @MethodSource("invalidWebColorProvider")
    void test_color_regex_invalid(String color) {
        assertFalse(HexValidatorWebColor.isValid(color));
    }

    static Stream validWebColorProvider() {
        return Stream.of(
                "#000000",
                "#999999",
                "#1a1a1a",
                "#1A1A1A",
                "#0f0f0f",
                "#0F0F0F",
                "#bcbcbc",
                "#BcbCbC",
                "#000",
                "#FFF",
                "#abc",
                "#def");
    }

    static Stream invalidWebColorProvider() {
        return Stream.of(
                "123456",                   // must start with a #
                "#afafah",                  // support a-f only, h is not allowed
                "#123abce",                 // invalid length, must length of 3 or 6
                "#1234",                    // invalid length, must length of 3 or 6
                "#-123",                    // support 0-9 only
                " ",                        // space
                "");                        // empty
    }

}

4. Регулярное выражение найти шестнадцатеричный цветовой код из строки

Ниже приведен пример использования регулярного выражения для поиска или извлечения шестнадцатеричного цветового кода из строки.

package com.mkyong.regex.hex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindHexColorCode {

    public static void main(String[] args) {

        String str = "p { color: #000; }";

        Pattern pattern = Pattern.compile(
                "^(.*?)(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))\\b(.*)$");

        Matcher matcher = pattern.matcher(str);
        if (matcher.matches()) {
            System.out.println(matcher.groupCount());     // 4
            System.out.println(matcher.group(0));         // p { color: #000; }
            System.out.println(matcher.group(1));         // p { color:
            System.out.println(matcher.group(2));         // #000
            System.out.println(matcher.group(3));         // 000
            System.out.println(matcher.group(4));         // ; }
        } else {
            System.out.println("no match!");
        }

    }

}

Выход

4
p { color: #000; }
p { color:
#000
000
; }

В регулярном выражении \лучший |/метасимвол означает границу слова , который гарантирует, что за шестнадцатеричным цветовым кодом не следует никаких слов.

Скачать Исходный Код

$клон git $клон git

$cd java-регулярное выражение/шестнадцатеричное

Рекомендации

Оригинал: “https://mkyong.com/regular-expressions/how-to-validate-hex-color-code-with-regular-expression/”