Мастер-классы по Javascript Екатеринбург Ростов-на-Дону Москва Узнать больше...
Содержание (скрыть) Содержание (показать)

Цифровые квантификаторы

Скажем, нам нужно найти трёхзначное число. Это просто сделать с помощью \d:

showMatch( "Мне 100 лет", /\d\d\d/ )  // 100

Но давайте пойдём дальше. Что, если нам нужно найти пятизначное число? Неужели придётся повторять \d пять раз: \d\d\d\d\d?

К счастью, есть более красивое решение.

Количество символов может быть определено с помощью следующего синтаксиса: {n}. Таким образом, \d{5} обозначает 5 цифр, как и \d\d\d\d\d.

Следующий пример находит пятизначное число.

showMatch( "Мне 12345 лет", /\d{5}/ )  //  "12345"

Для того, чтобы найти, например, числа размером от трёх до пяти знаков, нужно указать границы в фигурных скобках: \d{3,5}

showMatch( "Мне 1234 года", /\d{3,5}/ )  // "1234"

Последнее значение можно и не указывать. Тогда, выражение \d{3,} найдет числа, длиной от трех знаков:

showMatch( "Мне 12345678 лет", /\d{3,}/ ) // "12345678"

Напишите регулярное выражение для поиска в цвета в строке. Цвет начинается с '#' и содержит 6 шестнадцатеричных символов (только этот тип цвета для этой задачи).

var re = /*...ваше глобальное регулярное выражение...*/

var subj = "color: #121212; background-color: #AA00ef \
  width: 12px; bad-colors: f#fddee #fd2 "

alert( subj.match(re) )  // #121212,#AA00ef

Решение
Решение

Итак, нужно написать выражение для описания цвета, который начинается с «#», за которым следуют 6 шестнадцатеричных символов.

Шестнадцатеричный символ можно описать с помощью [0-9a-fA-F]. Мы можем сократить выражение, используя не чувствительный к регистру шаблон [0-9a-f].

Для его шестикратного повторения мы будем использовать квантификатор {6}.

В итоге, получаем выражение вида /#[a-f0-9]{6}/gi.

var re = /#[a-f0-9]{6}/gi

var subj = "color: #121212; background-color: #AA00ef \
  width: 12px; bad-colors: f#fddee #fd2 "

alert( subj.match(re) )  // #121212,#AA00ef

Проблема этого выражения в том, что оно находит цвет и в более длинных последовательностях:

alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678

Если это является проблемой, то ее можно решить чуть более сложным выражением.


Комментарии

  1. Приветствуются комментарии, содержащие дополнения и вопросы по статье, и ответы на них.
  2. Если ваш комментарий касается задачи -- откройте её в отдельном окне и напишите там.
  3. Комментарии без смысла, с рекламой или не о статье вообще - удаляются.
Наверх

Содержание

Реклама

Нашли опечатку?

Нашли опечатку на сайте? Что-то кажется странным?
Выделите соответствующий текст и нажмите Ctrl+Enter!

Последние Комментарии

Помоги другим!

Помоги другим узнать о хорошей статье!