Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Если вы не можете точно вспомнить, каким из символов должен предшествовать символ

\
, можете спокойно помещать обратный слэш перед любым из символов. Однако имейте в виду, что многие буквы и цифры вместе с символом слэша обретают специальное значение, поэтому тем буквам и цифрам, которые вы ищете буквально, не должен предшествовать символ
\
. Чтобы включить в регулярное выражение сам символ обратного слэша, перед ним, очевидно, следует поместить другой символ обратного слэша. Например, следующее регулярное выражение соответствует любой строке, содержащей символ обратного слэша:
/\\/
.

10.1.2. Классы символов

Отдельные символы литералов могут объединяться в классы символов путем помещения их в квадратные скобки. Класс символов соответствует любому символу, содержащемуся в этом классе. Следовательно, регулярное выражение

/[abc]/
соответствует одному из символов
а, b
или
с
. Могут также определяться классы символов с отрицанием, соответствующие любому символу, кроме тех, которые указаны в скобках. Класс символов с отрицанием задается символом
~
в качестве первого символа, следующего за левой скобкой. Регулярное выражение
/[~abc]/
соответствует любому символу, отличному от
а
,
b
или
с
. В классах символов диапазон символов может задаваться при помощи дефиса. Поиск всех символов латинского алфавита в нижнем регистре осуществляется посредством выражения
/[a-z]/
, а любую букву или цифру из набора символов Latin можно найти при помощи выражения
/[a-zA-Z0-9]/
.

Некоторые классы символов используются особенно часто, поэтому синтаксис регулярных выражений в JavaScript включает специальные символы и управляющие (escape) последовательности для их обозначения. Так,

\s
соответствует символам пробела, табуляции и любым пробельным символам из набора Unicode, a
\S
– любым символам, не являющимся пробельными символами из набора Unicode. В табл. 10.2 приводится перечень этих спецсимволов и синтаксиса классов символов. (Обратите внимание, что некоторые из управляющих последовательностей классов символов соответствуют только ASCII-символам и не расширены для работы с Unicode-символами. Можно явно определить собственные классы Unicode-символов, например, выражение
/[\u0400-\04FF]/
соответствует любому символу кириллицы.)

Обратите внимание, что управляющие последовательности специальных символов классов могут находиться в квадратных скобках.

\s
соответствует любому пробельному символу, a
\d
соответствует любой цифре, следовательно,
/[\s\d]/
соответствует любому пробельному символу или цифре. Обратите внимание на особый случай. Как мы увидим позже, последовательность
\b
имеет особый смысл. Однако когда она используется в классе символов, то обозначает символ «забой». Поэтому, чтобы обозначить символ «забой» в регулярном выражении буквально, используйте класс символов с одним элементом:
/[\b]/
.

10.1.3. Повторение

Имея знания синтаксиса регулярных выражений, полученные к настоящему моменту, мы можем описать число из двух цифр как

/\d\d/
или из четырех цифр как
/\d\d\d\d/
, но не сможем, например, описать число, состоящее из любого количества цифр, или строку из трех букв, за которыми следует необязательная цифра. Эти более сложные шаблоны используют синтаксис регулярных выражений, указывающий, сколько раз может повторяться данный элемент регулярного выражения.

Символы, обозначающие повторение, всегда следуют за шаблоном, к которому они применяются. Некоторые виды повторений используются довольно часто, и для обозначения этих случаев имеются специальные символы. Например,

+
соответствует одному или нескольким экземплярам предыдущего шаблона. В табл. 10.3 приведена сводка синтаксиса повторений.

Следующие строки демонстрируют несколько примеров:

/\d{2,4}/ // Соответствует числу, содержащему от двух до четырех цифр

/\w{3}\d?/ // Соответствует в точности трем символам слова

// и одной необязательной цифре

/\s+java\s+/ // Соответствует слову "java" с одним или более пробелами

// до и после него

/[~(]*/ // Соответствует нулю или более символам, отличным от открывающей круглой

// скобки

Будьте внимательны при использовании символов повторения

*
и
?
. Они могут соответствовать отсутствию указанного перед ними шаблона и, следовательно, отсутствию символов. Например, регулярному выражению
/а*/
соответствует строка «
bbbb
», поскольку в ней нет символа
а
!

10.1.3.1. «Нежадное» повторение

  • Читать дальше
  • 1
  • ...
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • ...

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

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: