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

Символьные классы

Допустим, нам нужно найти цифру в строке. Не какую-то конкретную, а просто любую цифру.

Можно, конечно, сделать 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


Комментарии

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

Содержание

Реклама

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

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

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

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

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