Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / JavaScript /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Встроенные объекты Error, Math и RegExp - Программирование от RIN.RU
Встроенные объекты Error, Math и RegExp



Свойства $1, :, $9


Синтаксис: RegExp.$n
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств $1, :, $9 являются подстроки исходной строки, которые были запомнены в процессе последнего сопоставления с образцом. Регулярное выражение может содержать любое количество выражений в круглых скобках, но в объекте RegExp запоминаются только последние девять найденных соответствий.


Пример: следующий сценарий


var re = new RegExp("(\\d*)\\s*(\\d*)","ig");
var arr = re.exec("111 2222 33333");
var s = "$1 = "" + RegExp.$1 + "" ";
s += "$2 = "" + RegExp.$2 + "" ";
s += "$3 = "" + RegExp.$3 + """;
document.write(s);


выведет на экран обозревателя текст $1 = "111" $2 = "2222" $3 = "".


Эти свойства объекта RegExp являются статическими и изменяются при каждой операции сопоставления с регулярным выражением. В методе String.replace они употребляются без имени объекта RegExp. См. пример в этом пункте.


Свойства $01, :, $99


Синтаксис: RegExp.$nn
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Поддержка :Поддерживаются с версии 5.5.
Не поддерживаются.


Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств $01, :, $99 являются подстроки исходной строки, которые были запомнены в процессе последнего сопоставления с образцом. Регулярное выражение может содержать любое количество выражений в круглых скобках, но в этих свойствах запоминаются только последние 99 найденных соответствий.


Пример: следующий сценарий


var re = new RegExp("(\\d*)\\s*(\\d*)","ig");
var arr = re.exec("111 2222 33333");
var s = "$01 = "" + RegExp.$01 + "" ";
s += "$02 = "" + RegExp.$02 + "" ";
s += "$03 = "" + RegExp.$03 + """;
document.write(s);


выведет на экран обозревателя текст $01 = "111" $02 = "2222" $03 = "".


Эти свойства объекта RegExp являются статическими и изменяются при каждой операции сопоставления с регулярным выражением. В методе String.replace они употребляются без имени объекта RegExp. См. пример в этом пункте.


Свойство global


Синтаксис: регвыр.global
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Значением свойства global является значение опции "g" (глобальный поиск), заданное при создании объекта регвыр.


Например, следующий сценарий


var re = new RegExp("a+b+c","ig");
document.write(re.global);


выведет на экран обозревателя текст true.


Свойство ignoreCase


Синтаксис: регвыр.ignoreCase
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Значением свойства ignoreCase является значение опции "i" (не различать строчные и прописные буквы), заданное при создании объекта регвыр.


Например, следующий сценарий


var re = new RegExp("a+b+c","ig");
document.write(re.ignoreCase);


выведет на экран обозревателя текст true.


Свойство input


Синтаксис: RegExp.input
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Значением свойства input является последняя исходная строка, к которой применялось сопоставление с образцом. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.


Пример: следующий сценарий


var re = new RegExp("\\d+", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.input);


выведет на экран обозревателя текст 111 2222 33333.


Свойство lastIndex


Синтаксис: регвыр.lastIndex
Атрибуты: { DontEnum, DontDelete }

Значением свойства lastIndex является целое число, содержащее номер элемента строки, с которого начнется следующее сопоставление с образцом. При создании объекта регвыр этому свойству присваивается значение 0. Оно используется только в тех случаях, когда включена опция глобального поиска (т. е. свойство global имеет значение true).


Пример:


var re = /(aha)/g;
var a = re.exec("aha"); // a равно ["aha", "aha"], re.lastIndex равно 3
var a = re.exec("aha"); // a равно [""], re.lastIndex по-прежнему равно 3
re.lastIndex = 0; // повторить поиск
var a = re.exec("aha"); // a равно ["aha", "aha"], re.lastIndex равно 3


Свойство lastMatch ($&)


Синтаксис: RegExp.lastMatch
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Поддержка :Поддерживается с версии 5.5.
Поддерживается с версии 4.0.


Значением свойства lastMatch является последняя найденная подстрока исходной строки. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.


Пример: следующий сценарий


var re = new RegExp("\\d+", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.lastMatch);


выведет на экран обозревателя текст 111.


Свойство lastParen (&+)


Синтаксис: RegExp.lastParen
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Поддержка :Поддерживается с версии 5.5.
Поддерживается с версии 4.0.


Значением свойства lastParen является последняя запомненная подстрока исходной строки, соответствующая подвыражению регулярного выражения, заключенному в круглые скобки. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.


Пример: следующий сценарий


var re = new RegExp("(\\d+) (\\d+)", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.lastParen);


выведет на экран обозревателя текст 2222.


Свойство leftContext (&`)


Синтаксис: RegExp.leftContext
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Поддержка :Поддерживается с версии 5.5.
Поддерживается с версии 4.0.


Значением свойства leftContext является подстрока исходной строки, предшествующая последней найденной подстроке. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.


Пример: следующий сценарий


var arr = / (\d+)/.exec("111 2222 33333");
document.write(RegExp.leftContext + "|" + RegExp.lastMatch + "|" + RegExp.rightContext);


выведет на экран обозревателя текст 111| 2222| 33333.


Свойство multiline ($*)


Синтаксис: регвыр.multiline
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Поддержка :Поддерживается с версии 5.5.
Поддерживается с версии 4.0.


Значением свойства multiline является значение опции "m" (многострочный поиск), заданное при создании объекта регвыр.


Например, следующий сценарий


var re = new RegExp("a+b+c","im");
document.write(re.ignoreCase);


выведет на экран обозревателя текст true.


В обозревателях Netscape опция "m" не поддерживается, а свойство multiline является статическим свойством объекта RegExp. Мы можем присваивать ему логическое значение, которое включает или выключает многострочный поиск для всех регулярных выражений, например RegExp.multiline = true. Помните, что обработчики событий после своего завершения всегда сбрасывают значение этого свойства в false. Кроме того, Netscape поддерживает $* как синоним данного свойства.


Свойство rightContext (&")


Синтаксис: RegExp.rightContext
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Поддержка :Поддерживается с версии 5.5.
Поддерживается с версии 4.0.


Значением свойства rightContext является подстрока исходной строки, следующая за последней найденной подстрокой. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.


Пример: следующий сценарий


var arr = / (\d+)/.exec("111 2222 33333");
document.write(RegExp.leftContext + "|" + RegExp.lastMatch + "|" + RegExp.rightContext);


выведет на экран обозревателя текст 111| 2222| 33333.


Свойство source


Синтаксис: регвыр.source
Атрибуты: { DontEnum, DontDelete, ReadOnly }

Значением свойства source является строка, содержащая регулярное выражение, заданное при создании объекта регвыр.


Например, следующий сценарий


var re = new RegExp("a+b+c","ig");
document.write(re.source);


выведет на экран обозревателя текст a+b+c.


Метод compile


Синтаксис: регвыр.compile(образец, опции?)
Аргументы: образец - регулярное выражение опции - необязательные опции поиска

Метод compile компилирует образец во внутренний формат хранения, что в дальнейшем ускоряет сопоставление с этим образцом. Компиляция регулярного выражения имеет смысл, если вы собираетесь использовать это выражение несколько раз.


Пример:


var r = new RegExp("[A-Z]", "g");
r.compile("[a-z]", "g");


Метод exec


Синтаксис: регвыр.exec(строка)
Аргументы: строка - любое строковое выражение
Результат: массив результатов или null

Метод exec выполняет сопоставление строки с образцом, заданным регвыр. Если сопоставление с образцом закончилось неудачей, то возвращается значение null. В противном случае результатом является массив подстрок, соответствующих заданному образцу. В процессе сопоставления производится обновление всех свойств объекта регвыр (и тем самым всех свойств объекта RegExp).


Результирующий массив имеет следующие свойства:


  • свойство input содержит исходную строку;

  • свойство index содержит позицию найденной подстроки в исходной строке;

  • свойство length равно n + 1, где n - количество подвыражений регулярного выражения, заключенных в круглые скобки;

  • элемент 0 содержит найденную подстроку;

  • элементы 1, :, n содержат подстроки, соответствующие подвыражениям регулярного выражения в круглых скобках.


Пример: следующий сценарий


var arr = /(\d+)\.(\d+)\.(\d+)/.exec("Я родился 21.05.1958");
document.write("Дата рождения: ", arr[0], "
");
document.write("День рождения: ", arr[1], "
");
document.write("Месяц рождения: ", arr[2], "
");
document.write("Год рождения: ", arr[3], "
");
выведет на экран обозревателя текст:


Дата рождения: 21.05.1958
День рождения: 21
Месяц рождения: 05
Год рождения: 1958


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


Например, следующий сценарий


var re = /\d+/g;
var s = "123 abc 456 def 789 xyz";
var result;
while (result = re.exec(s))
document.write(result[0] + " ");


выведет на экран обозревателя строку 123 456 789.


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


Метод test


Синтаксис: регвыр.test(строка)
Аргументы: строка - любое строковое выражение
Результат: логическое значение

Метод test выполняет сопоставление строки с образцом, заданным регвыр и возвращает true, нсли сопоставление с образцом прошло успешно, и false в противном случае. Этот метод эквивалентен выражению регвыр.exec(строка) != null.


Пример:


if (!/(\d+)\.(\d+)\.(\d+)/.test(str))
document.write("Неверное значение строки!");


Метод toString


Синтаксис: регвыр.toString()
Результат: строковое значение

Метод toString преобразует регвыр в строковое значение.


Например, сценарий


var x = new RegExp("a+b+c", "g");
document.write(x.toString());


выведет на экран обозревателя строку /a+b+c/g.

<<<  Назад
 1  2  3  4  5 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Обзор языка

Основные понятия

Типы данных

Выражения и операции

Регулярные выражения

Операторы и функции

Использование объектов

Примитивные встроенные объекты

Строки: встроенный объект String

Массивы: встроенный объект Array

Дата и время: встроенный объект Date

Дополнительные возможности JScript

Исполняющая система JScript

Исполняющая система JScript (продолжение)

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь