Книга: 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"]: разбить по нецифровым символам
- Глава 23 Сопоставление строк
- 2.2. Сопоставление
- Пользуйтесь шаблонами
- 12.7.1. Простое сопоставление с шаблоном: fnmatch()
- ПРИЛОЖЕНИЕ Б Сопоставление функций Windows, UNIX и библиотеки С
- Сопоставление с UNIX и библиотекой С
- 3.14.5 Сопоставление с датой и временем
- Сопоставление строк с регулярными выражениями
- 23.2.2. Сопоставление с регулярными выражениями
- 3.14.1. Сопоставление с IP-адресом
- 3.14.8. Сопоставление с номером версии
- Как методика TDD связана с шаблонами?