Веб-программирование

Обучение программированию

Делаете первые шаги в программировании? Представляем вашему вниманию пошаговое обучение самостоятельного создания сайтов любой сложности на примерах! На страницах сайта KobRU вы найдете все самое необходимое, для того чтобы по праву считаться веб-мастером по созданию привлекательных динамически изменяемых интернет-страниц, используя основные инструменты веб-разработчиков: HTML; CSS; PHP; MySQL; JAVASCRIPT и другие. Сайт KobRU - наиболее полное и качественно структурированное руководство с предельно понятными пояснениями и поэтапным изложением материала, который поможет вам в совершенстве овладеть искусством программирования. Добавьте динамики и интерактивность в свои веб-проекты!

Вход в личный кабинет

Забыли пароль?

Не зарегистрированны?


Конструкторское Web-бюро
8.03.1 Объект RegExp Часть I

Автор: Denisido

Дата: 2010-07-25

Определение регулярных выражений

В предыдущем разделе с помощью методов объекта String мы искали точные значения. Регулярные же выражения ищут не только точное совпадение текста, а символьный шаблон. К примеру, вы захотите найти все ссылки на вашем сайте и сделать с ними какие-то определенные действия, или вам нужно найти ошибочно напечатанные повторяющиеся слова, следующие друг за другом (строка строка или текст    текст), вы же не знаете точно какие слова будете искать, в каком месте они находятся и сколько между ними пропусков. Для таких целей как раз применяется мощное средство обработки текста с фантастическими возможностями под названием регулярные выражения. В JavaScript они представлены объектами RegExp. Создать объект можно с помощью конструктора RegExp():

  
var regex = new RegExp("регулярное выражение");
  

кроме вышеуказанного метода, существует и другой, более привлекательный и популярный:

  
var regex = /регулярное выражение/;   // не нуждается в апострофах или кавычках
  

Символы

Регулярное выражение состоит из двух типов символов. Первые - это все алфавитноцифровые символы, именуемые литералами, проще говоря обычный текст, второй тип - это спецсимволы ( некоторые из них: * ? / + ), называемые метасимволами:

  
var regex = /javascript/; // литерал - ищет все строки, содержащие подстроку javascript
  
  
var regex = /^.*$/; // метасимволы, имеющие особые значения
  

Метод seach()

Если вы помните, то в предыдущем уроке мы с вами рассматривали метод indexOf() , который при удачном поиске находит начальную позицию в строке, если нет, то возвращает -1:

Запустить!
var question = 'Вы знаете английский язык?';
var searchText = question.indexOf('английский'); 
alert(searchText);   // возвратит 10

Хочу отметить, что метод search() имеет схожий принцип, сравните:

Запустить!
var question = 'Вы знаете английский язык?'; 
var regex = /английский/;  // применяем регулярное выражение (литералы)
var searchText = question.search(regex);
alert(searchText);  // возвратит 10

На первый взгляд вам может показаться, что это два одинаковых метода, но это не так. В отличие от метода indexOF(), который ищет абсолютное совпадение, метод search() может принимать в качестве параметра шаблон регулярного выражения:

Запустить!
var question = 'Вы знаете испанский язык?'; 
var regex = /ис.*?й/;  //точка * и ? являются метасимволами, остальные литералы
var searchText = question.search(regex);
alert(searchText);  // возвратит 10

Мы написали шаблон на поиск символов, начинающихся с ис и заканчивающихся на й, и теперь, если заменить вопрос: "Знаете ли вы исландский язык?", в нашу переменную searchText запишется слово исландский, потому что оно совпадает с шаблоном, а не с точным значением.

Запустить!
var question = 'Вы знаете исландский язык?'; // исландский совпадает с шаблоном
var regex = /ис.*?й/; // очень тривиальный пример с RE (регулярным выражением)
var searchText = question.search(regex);
alert(searchText);  // возвратит 10

Метод match()

Данный метод не только проверяет наличие шаблона в строках, но и вытаскивает их для дальнейших манипуляций с ними! Посмотрим пример:

Запустить!
var text = 'JavaScript рулит!';
var regex = /Script/; // вводим шаблон
var result = text.match(regex); // ищем наш шаблон в строке
alert(result);  //выведет Script

Стоит отметить, если наш шаблон не имеет совпадений, то в результате возвращается значение null. Также отметим, что мы искали первое совпадение в строке, но данный метод match() возвращает массив, если результат поиска положителен. К примеру, напишем шаблон, который будет находить все цифры в строке и выведем некоторые из них:

Запустить!
var text = '1 два 3 четыре 5, вышел зайчик погулять.';
var regex = /\d+/g; // вводим шаблон
var result = text.match(regex); // ищем наш шаблон в строке
alert(result[1]+' '+result[2]);  /* В общем возвратит массив ['1','3','5'], но в нашем случае вытащит только 2-й и 3-й элементы массива, т.е. это будут цифры 3 и 5 */

Метод replace()

С помощью регулярных выражений можно не только находить совпадение с подвыражением, но и производить замену текста в строке. Метод replace() содержит два параметра: первый - шаблон регулярного выражения, второй - замена:

Запустить!
var text = 'вилка';
var regex = /в/g;                      // вводим шаблон
var result = text.replace(regex, 'п'); // заменит в на п
alert(result)                          // выведет пилка

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



Оцените материал по 5-ти бальной шкале: 1 2 3 4 5



Коментарии:

Коментарий добавил(а): fgh1233
Дата: 2010-07-31

Очень ценная и нужная информация, впрочем, как всегда.

Добавить новый коментарий:

Текст коментария:

Введите результат с картинки

Просмотров: 10084

Метки раздела JavaScript

Основы web программирования, var javascript, javascript функции, javascript обучение, javascript простые примеры, html javascript, javascript примеры, javascript random, уроки сайтостроения, java script, регулярные выражения, appendchild javascript, javascript бесплатно, javascript document write, javascript справочник, javascript примеры.