Допустим, нам нужно найти цифру в строке. Не какую-то конкретную, а просто любую цифру.
Можно, конечно, сделать 10 попыток — искать сначала "0", потом "1", "2" и так далее, но регулярные выражения позволяют решить задачу более изящно.
Вместо символа, регулярное выражение может содержать класс символов.
Например, произвольная цифра обозначается \d. Пример ниже ищет её в строке:
showMatch( "Я люблю HTML5!", /\d/ ) // 5
Самые полезные классы::
\d(от английского «digit» - «цифра»)- Цифра, символ от
0до9. \s(от английского «space» - «пробел»)- Пробельный символ, включая табы, переводы строки и т.п.
\w(от английского «word» - «слово»)- Символ латинского алфавита или цифра или подчёркивание
'_'
Регулярное выражение может содержать и обычные символы и классы:
showMatch( "CSS4 - наше будущее", /CSS\d/ ); // 'CSS4'
Несколько классов в одном регэкспе:
showMatch( "Я люблю HTML5!", /\s\w\w\w\w\d/ ); // 'HTML5'

Также существуют обратные символьные классы:
\D- Не-цифра, любой символ кроме
\d \S- Не-пробел, любой символ кроме
\s. \W- Символ, не принадлежащий латиннице, а также не буква и не подчёркивание, алфавиту, т.е. любой кроме
\w
Например:
showMatch( "border-spacing", /\W/ ); // находит дефис '-'
Регулярное выражение также может содержать спецсимволы, такие же как строка: \n, \t и другие. Они являются обычными символами, для классов зарезервированы другие буквы.
Обычно мы не обращаем внимание на пробелы. Для нашего взгляда 1-5 и 1 - 5 почти идентичны.
Но в регулярных выражениях пробел - такой же символ, как и другие.
Поиск ниже не сработает, т.к. не учитывает пробелы вокруг дефиса:
showMatch( "1 - 5", /\d-\d/ ); // нет совпадений!
Поправим это. В регулярное выражение можно добавить пробелы или даже произвольный пробельный символ:
showMatch( "1 - 5", /\d - \d/ ) // работает showMatch( "1 - 5", /\d\s-\s\d/ ) // тоже работает
В регулярные выражения также не надо вставлять лишние пробелы. Все они имеют значение:
showMatch( "1-5", /\d - \d/ ) // не работает (1-5 без пробелов)
Особым классом символов является точка '.'.
В регулярном выражении, точка '.' обозначает любой символ, кроме перевода строки:
var re = /CS.4/; showMatch( "Стандарт CSS4", re ) // найдено "CSS4" showMatch( "Сталь CS-4", re ) // найдено "CS-4" showMatch( "CS 4", re ) // найдено "CS 4", пробел тоже символ
Точка означает именно «произвольный символ», то есть какой-то символ там должен быть:
showMatch( "CS4", /CS.4/ ) // нет совпадений
Время имеет формат часы:минуты. И часы и минуты состоят из двух цифр, например: 09:00`.
Напишите регулярное выражение для поиска времени в строке: Завтрак в 09:00.
P.S. В этой задаче строгость не важна, выражению позволительно найти и 25:99.
Ответ: \d\d:\d\d.
alert( "Завтрак в 09:00.".match( /\d\d:\d\d/ ) ); // 09:00
Комментарии
- Приветствуются комментарии, содержащие дополнения и вопросы по статье, и ответы на них.
- Если ваш комментарий касается задачи -- откройте её в отдельном окне и напишите там.
- Комментарии без смысла, с рекламой или не о статье вообще - удаляются.