Скажем, нам нужно найти трёхзначное число. Это просто сделать с помощью \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
Если это является проблемой, то ее можно решить чуть более сложным выражением.
Комментарии
- Приветствуются комментарии, содержащие дополнения и вопросы по статье, и ответы на них.
- Если ваш комментарий касается задачи -- откройте её в отдельном окне и напишите там.
- Комментарии без смысла, с рекламой или не о статье вообще - удаляются.