Книга: JavaScript. Подробное руководство, 6-е издание

3.2.4. Сопоставление с шаблонами

3.2.4. Сопоставление с шаблонами

В языке JavaScript определен конструктор RegExp(), предназначенный для создания объектов, представляющих текстовые шаблоны. Эти шаблоны описываются с помощью регулярных выражений, синтаксис которых был заимствован языком JavaScript из языка Perl. И строки, и объекты RegExp имеют методы, позволяющие выполнять операции сопоставления с шаблоном и поиска с заменой при помощи регулярных выражений.

RegExp не относится к числу фундаментальных типов данных языка JavaScript. Подобно объектам Date, они просто являются специализированной разновидностью объектов с удобным прикладным интерфейсом. Грамматика регулярных выражений и прикладной интерфейс отличаются повышенной сложностью. Они подробно описываются в главе 10. Однако поскольку объекты RegExp обладают широкими возможностями и часто используются на практике, мы коротко познакомимся с ними в этом разделе.

Несмотря на то что объекты RegExp не относятся к фундаментальным типам данных языка, они имеют синтаксис литералов и могут вставляться непосредственно в текст программы на языке JavaScript. Текст, заключенный в пару символов слэша, интерпретируется как литерал регулярного выражения. За вторым символом слэша из этой пары может следовать один или более символов, которые модифицируют поведение шаблона. Например:

/"HTML/            // Соответствует символам Н Т М L в начале строки
/[ 1-9][0-9]*/     // Соответствует цифре, кроме нуля, за которой следует любое число цифр
/bjavascriptb/i  // Соответствует подстроке "javascript”
                   // как отдельному слову, учитывает регистр символов

Объекты RegExp обладают множеством полезных методов. Кроме того, строки также обладают методами, которые принимают объекты RegExp в виде аргументов. Например:

var text = "testing: 1, 2, 3”; // Образец текста
var pattern = /d+/g       // Соответствует всем вхождениям одной или более цифр
pattern.test(text)         // => true: имеется совпадение
text.search(pattern)       // => 9: позиция первого совпадения
text.match(pattern)        // => ["1", "2", "3"]: массив всех совпадений
text.replace(pattern,'#'); // => "testing: tf, tf. #"
text.split(/D+/);         // => "1","2","3"]: разбить по нецифровым символам

Оглавление книги


Генерация: 1.258. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз