Шаблоны и регулярные выражения
В JavaScript регулярные выражения представлены объектом RegExp. Свойства RegExp принимают значения литералов регулярных выражений, заключенных в скобки /…/. Регулярные выражения из нескольких символов в стиле Perl записываются в косых скобках. Рассмотрим простой пример: /stud/. Регулярное выражение ищет все строки, содержащие подстроку stud. Выражение /^stud/ означает, что stud должно находится в начале слова (student), а /stud$/ - в конце (restud).
Символы могут объединяться в классы путем помещения в квадратные скобки. Квадратные скобки /[абв]/ означают “любой символ а,б,в из перечисленных в скобках”. Символ ^ в группе соответствует отрицанию, то есть указывает символы, не соответствующие шаблону. /[^абв]/ означает “любой символ отличный от а,б,в ” .
Для создания регулярных выражений могут быть использованы интервалы:
/[0-9]/ - совпадает с любой десятичной цифрой от 0 до 9;
/[a-z]/ - совпадает с любым символом нижнего регистра от а до z;
/[a-zA-Z0-9]/ - совпадает с любым символом или цифрой из набора Latin.
Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указаные интервалы (a-z и A-Z).
Специальные символы представляет собой алфавитный символ с обратным слешем \ - признаком особой интерпретации следующего за ним символа:
\d - обозначает любую десятичную цифру;
\D - обозначает любой символ кроме десятичной цифры;
\w - алфавитно-цифровой символ /[a-zA-Z0-9_]/
\W - символ, не являющийся алфавитно-цифровым /[^a-zA-Z0-9_]/
\s - пробельный символ
\S - символ не являющийся пробельным
\n – Символ перевода строки. Строка\nЕще строка
\r – Символ возврата каретки. Текст\r
\t – Символ табуляции. \tКрасная строка
\\ – Обратный слеш
Еще один символ \b забой, совпадает с границами слов: /sa\b/. Противоположный символ, \b, совпадает с чем угодно, кроме границы слова: /sa\b/.
Служебный символ . (точка) означает любой символ поэтому для поиска точки ее надо экранировать символом \. Шаблону соответствует знак точки в строке.
Символы +, *, ? и {...}, обозначающие количество повторений отдельного символа или конструкции, заключенной в квадратные скобки, называют квантификаторами. Принцип их действия проще всего пояснить на примерах:
[р]+ означает один или несколько символов р, стоящих подряд;
[р]* означает ноль и более символов р, стоящих подряд;
[р]? означает ноль или один символ р;
[р]{2} означает ровно два символа р, стоящих подряд;
[р]{2,3} означает от двух до трех символов р, стоящих подряд;
[р]{2,} означает два и более символов р, стоящих подряд.
Шаблон /stu+/ совпадает с последовательностью stu, за которой могут следовать дополнительные символы u. Рассмотрим другой пример использования квантификатора: /st{2,4}/. Этот шаблон совпадает с символом s, за которым следуют от 2 до 4 экземпляров символа t. /\w{3}\d?/ - три буквы и необязательная цифра. /\s+Java\s+/ - несколько пробелов до слова или после него. Выражение /[\d]+/ используется для поиска цифровой подстроки, выражение /([\d]+)000/ может использоваться при поиске денежных сумм.
Шаблон /<([\w]+)>/ совпадает с конструкциями, заключенными в угловые скобки, - например, тёгами HTML.
Подстроки в регулярных выражениях можно группировать при помощи круглых скобок: /домен – (by|ru|uk|com)/ соответствует строке домен – by или другой.
Оператор | (или) проверяет совпадение одной из нескольких альтернатив. ( ) – Логическая группировка выражений, которая (может)+ повторяться.
В регулярных выражениях могут использоваться флаги. Флаг i указывает , что поиск по шаблону должен быть нечуствительным к регистру символов, а флаг g- поиск должен быть глобальным. Пример:
/\bJava\b/gi
Методы класса String, поддерживающие регулярные выражения:
search(рег_выраж ); возвращает позицию символа в первой найденной подстоке. Например “JavaScript”.search(/script/i) возвращает 4.
Replase(рег_выраж, строка замены); - если указан флаг g, то заменяются все строки с выражением, иначе заменяется только первое найденное вхождение. Text.replace(/Javascript/gi,”JavaScript”). Метод match(рег_выраж) возвращает массив найденных по шаблону подстрок. Метод split(рег_выраж) – разбивает строку на массив строк.
Объекты браузера
Объектная модель JavaScript предоставляет возможность работы с объектами, зависящими от браузера (window, navigator, location, history и т.д.) и объектами, относящиеся к HTML документу (document, forms, frames и т.д.). Ниже представлена схема объектов, которая позволяет манипулировать свойствами и структурой документа.
Объект window
Объект window является контейнером для всех других объектов JavaScript. Текущее окне создается при запуске браузера. Окно можно создать также в JavaScript с помощью метода window.open():
var winobj=window.open([параметры]);
Свойства объекта window.
closed Возвращает true, если текущее окно закрыто.
defaultStatus, status Сообщение, отображаемое в строке состояния окна.
document Возвращает ссылку на документ, загруженный в текущее окно.
history Возвращает ссылку на объект истории браузера.
innerHeight/innerWidth Возвращает высоту/ширину клиентской области окна.
location Возвращает ссылку на объект location документа, загруженного в окно.
name Возвращает имя окна или фрейма.
navigator Возвращает ссылку на объект Web-обозревателя.
opener Возвращает ссылку на окно, которое открыло текущее окно, методом open.
outerHeight/outerWidth Возвращает полную высоту / ширину окна в пикселах.
pageXOffset/pageYOffset расстояние по горизонтали/ по вертикали между позицией окна и левой границей документа.
parent Возвращает ссылку на родительское окно, если текущий объект window -фрейм. В противном случае возвращается ссылка на само окно.
screen Возвращает ссылку на объект screen.
screenLeft/screenTop Возвращает горизонтальную/вертикальную координату левого верхнего угла окна.
screenX/screenY Горизонтальная/Вертикальная координата левого верхнего угла окна.
Self/ window Возвращает ссылку на объект window текущего окна.
top Возвращает ссылку на родительское окно самого верхнего уровня, если текущий объект фрейм. Иначе возвращается ссылка на само окно.
Методы объекта window
Ранее были рассмотрены три метода объекта window для отображения диалоговых окон: alert({Текст})-окно предупреждения; confirm({Текст}) - окно выбора Ok/Cancel; prompt({Приглашение}, [{Значение по умолчанию}]) - диалоговое окно с полем ввода.
Ниже приведены другие методы объекта window:
back() Возвращается к предыдущему документу.
focus() / blur() Переносит/ Удаляет фокус на текущее окно.
clearInterval({Таймер}) Останавливает таймер, установленный setInterval().
clearTimeout({Таймер}) Останавливает таймер, установленный setTimeout().
close() Закрывает текущее окно, открытое методом open().
execScript({Выражение},"JavaScript" ) Вычисляет выражение.
find([{Строка поиска}[, true|false]) Второй аргумент равен true, если поиск с учетом регистра символов, иначе false.
forward() Переходит к следующему документу в списке истории.
home() Переходит на "домашнюю" страницу, заданную в настройках браузера.
moveBy({X},{Y}) Перемещает окно на X пикселов вправо и на Y пикселов вниз.
moveTo({X},{Y}) Перемещает окно в точку экрана, заданную координатами X и Y.
navigate({Адрес}) Загружает Web-страницу.
open({Адрес}, {Имя окна}, [{Список свойств окна}]) Открывает новое окно, загружает в него документ, адрес которого указан, и присваивает окну переданное имя
print() Печатает содержимое окна.
resizeBy({X},{Y}) Увеличивает/уменьшает окно на X пикселов по горизонтали и на Y пикселов по вертикали.
resizeTo({X},{Y}) Увеличивает или уменьшает окно до размера, заданного X и Y.
scrollBy({X},{Y}) Прокручивает содержимое окна на X пикселов вправо и Y пикселов вниз.
scrollTo({X},{Y}) Прокручивает содержимое окна в точку, заданную значениями X и Y.
setHotKEys(true|false) Разрешает (true) или запрещает (false) "горячие" клавиши в окне, не имеющем строки меню.
setInterval({Функции или выражение},{Интервал}, [{Список аргументов функции, разделенных запятыми}]) Вычисляет значение выражения каждый раз по истечении заданного интервала (в миллисе-кундах). Возвращает указатель на объект тай-мер, который можно использовать в методе clearInterval.
setResizeeable(true|false) Разрашает (true) или запрещает (false) пользователю изменять размеры окна.
setTimeout({Функции или выраже-ние},{Интервал}, [{Список аргументов функции, разделенных запятыми}]) Вычисляет значение выражения по истечении заданного интервала (в миллисекундах), если до этого не был вызван метод clearTimeout. Возвращает указатель на объект, который можно использовать в методе clearTimeout для уничтожения таймера.
stop() Останавливает загрузку текущей страницы.
Все методы вызываются одним из следующих способов: window. метод(параметры);
self. метод(параметры); winobj. метод(параметры);