RegExp NN 4  IE J3  ECMA n/a

Объект RegExp - статический объект, который и генерирует экземпляры регулярного выражения, и контролирует всё регулярное выражение в текущем окне или фрейме. Экземпляры объекта RegExp обозреваются в описании объекта regular expressions, которое следует далее.

Регулярные выражения помогают в расположении текста, который соответствует образцам символов или характеристик. Например, регулярное выражение может использоваться, чтобы очень быстро выяснить, если ли в текстовом поле число с пятью цифрами. Определение соответствующего образца требует знания определённого синтаксиса, который лежит вне области этой книги (но охвачен в Mastering Regular Expressions, Jeffrey E.F. Friedl, изданной O'Reilly). Общий синтаксис может быть найден в описании объекта regular expression

Свойства объекта RegExp cохраняют информацию о последней операции любого регулярного выражения в документе. Поэтому, думается, что каждое из этих свойств изменяется после каждой операции с регулярными выражениями. Такие операции включают не только методы экземпляра объекта regular expression (exec() и test()), но также и методы объекта String, которые могут принимать регулярные выражения как параметры (match(), replace(), и split()). Некоторых из этих свойств обращаются также к объекту regular expression, подготавливаясь к следующей операции с регулярным выражением

Все свойства имеют и многословные названия, и также как shortcut-имена, которые начинаются с $.

Создание:

Формат литерального текста или функция конструктора RegExp.

Литеральный формат используется так:

/pattern/flags

Функция конструктора используется так:

new RegExp("pattern"[, "flags"])

Параметры:

pattern - Текст регулярного выражения.

flags - Флаг, если специфицирован, может иметь следующие значения в любом сочетании:

  • g: глобальная подстановка
  • i: игнорировать регистр
  • m: подставлять на нескольких строках

Заметьте, что параметры литерального формата не используют кавычек для обозначения строк, а параметры функции конструктора - используют кавычки. Итак, следующие выражения создают одно и то же регулярное выражение:

/ab+c/i
new RegExp("ab+c", "i")

В таблице представлен полный список и описание специальных символов, которые могут использоваться в регулярных выражениях (см. также regular expression)

Символ Значение
\ Для символов, которые обычно рассматриваются литерально, указывает, что следующий символ является специальным символом и не интерпретируется литерально.

Например, /b/ совпадает с символом 'b'. Поместив обратную наклонную черту-backslash перед b, то есть /\b/, придаём символу специальное значение - "граница слова".

-или-

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

Например, * это специальный символ, который означает 0 или более вхождений предшествующего символа; например, /a*/ означает совпадение с 0 или более a. Чтобы искать * литерально, поставьте перед ним backslash; например, /a\*/ совпадает с 'a*'.

^ Совпадение с начала ввода. Если многострочный флаг установлен в true, совпадает также сразу после символа обрыва строки.

Например, /^A/ не совпадает с 'A' в строке "an A", но совпадает с первой 'A' в строке "An A."

$ Совпадение в конце ввода. Если многострочный флаг установлен в true, совпадает также непосредственно перед символом обрыва строки.

Например, /t$/ не совпадает с 't' в "eater", но совпадает с ним в "eat".

* Совпадение с предыдущим символом 0 или более раз.

Например, /bo*/ совпадает с 'boooo' в "A ghost booooed" и с 'b' в "A bird warbled", но ничего не совпадает в "A goat grunted".

+ Совпадение с предыдущим символом 1 или более раз. Эквивалентно {1,}.

Например, /a+/ совпадает с 'a' в "candy" и со всеми 'a' в "caaaaaaandy".

? Совпадение с предыдущим символом 0 или 1 раз.

Например, /e?le?/ совпадает с 'el' в "angel" и с 'le' в "angle."

если используется сразу после одного из квантификаторов *, +, ? или {}, делает квантификатор нежадным (совпадает минимальное число раз), что противоположно действию по умолчанию, когда квантификатор жадничает (совпадает максимальное число раз).

Также используется во вперёдсмотрящих утверждениях, которые описаны в (?=), (?!), и (?:) в этой таблице.

. (Десятичная точка) совпадает с любым одиночным символом, исключая символ новой строки.

Например, /.n/ совпадает с 'an' и 'on' в "nay, an apple is on the tree", но не с 'nay'.

(x) Совпадает с 'x' и запоминает совпадение. Это называется "захватывающие скобки".

Например, /(foo)/ совпадает с и запоминает 'foo' в "foo bar." Совпавшая подстрока может быть вызвана из элементов результирующего массива [1], ..., [n] или из предопределённых свойств $1, ..., $9 RegExp-объектов.

(?:x) Совпадает с 'x', но не запоминает совпадение. Это называется "незахватывающие скобки". Совпавшая подстрока не может быть вызвана из элементов результирующего массива [1], ..., [n] или из предопределённых свойств $1, ..., $9 RegExp-объектов.
x(?=y) Совпадает с 'x', только если после 'x' следует 'y'. Например, /Jack(?=Sprat)/ совпадает с 'Jack', только если следом идёт 'Sprat'. /Jack(?=Sprat|Frost)/ совпадает с 'Jack', только если следом идёт 'Sprat' или 'Frost'. Однако ни 'Sprat', ни 'Frost' не являются частью результатов совпадения.
x(?!y) Совпадает с 'x', только если после 'x' не следует 'y'. Например, /\d+(?!\.)/ совпадает с числом, только если следом не идёт десятичная точка.
/\d+(?!\.)/.exec("3.141") совпадает с 141, но не совпадает с 3.141.
x|y Совпадает с 'x' или с 'y'.

Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple."

{n} Где n это положительное целое. Совпадает точно с n появлений предшествующего элемента.

Например, /a{2}/ не совпадает с 'a' в "candy," но совпадает со всеми 'a' в "caandy" и с первыми двумя 'a' в "caaandy."

{n,} Где n это положительное целое. Совпадает с не менее, чем n появлений предшествующего элемента.

Например, /a{2,}не совпадает с 'a' в "candy," но совпадает со всеми 'a' в "caandy" и в "caaaaaaandy."

{n,m} Где n и m это положительные целые. Совпадает с минимум n и с максимум m появлений предшествующего элемента.

Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' в "candy," с первыми двумя 'a' в "caandy" и с первыми тремя 'a' в "caaaaaaandy". Обратите внимание, что при совпадении с "caaaaaaandy", совпадает "aaa", хотя оригинальная строка содержит больше 'a'.

[xyz] Набор символов. Совпадение с одним из символов в скобках. Можно специфицировать диапазон символов с помощью дефиса.

Например, [abcd] это то же самое, что [a-c]. Совпадает с 'b' в "brisket" и с 'c' в "ache".

[^xyz] Отрицающий набор символов. То есть совпадение с тем, что не заключено в скобки. Можно специфицировать диапазон символов с помощью дефиса.

Например, [^abc] это то же самое, что [^a-c]. С начала совпадает с 'r' в "brisket" и с 'h' в "chop."

[\b] Совпадает с backspace. (Не с \b.)
\b Совпадает с концом слова, таким как пробел. (Не с [\b].)

Например, /\bn\w/ совпадает с 'no' в "noonday";/\wy\b/ совпадает с 'ly' в "possibly yesterday."

\B Совпадение не в конце слова.

Например, /\w\Bn/ совпадает с 'on' в "noonday", и /y\B\w/ совпадает с 'ye' в "possibly yesterday."

\cX Где X это буква из диапазона A - Z. Совпадение с управляющим символом в строке.

Например, /\cM/ совпадает с control-M в строке.

\d Совпадает с цифрой. Эквивалентно [0-9].

Например, /\d/ или /[0-9]/ совпадает с '2' в "B2 is the suite number."

\D Совпадает с не-цифрой. Эквивалентно[^0-9].

Например, /\D/ или /[^0-9]/ совпадает с 'B' в "B2 is the suite number."

\f Совпадает с form-feed/прогоном страницы
\n Совпадает с linefeed/прогоном строки.
\r Совпадает с "возвратом каретки".
\s Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed. Эквивалентно [ \f\n\r\t\u00A0\u2028\u2029].

Например, /\s\w*/ совпадает с ' bar' в "foo bar."

\S Совпадает с одиночным символом, отличным от пробелов. Эквивалентно
[^ \f\n\r\t\u00A0\u2028\u2029].

Например, /\S/\w* совпадает с 'foo' в "foo bar."

\t Совпадает с tab.
\v Совпадает с vertical tab.
\w Совпадает с любым алфавитным или цифровым символом, включая underscore/символ подчёркивания. Эквивалентно [A-Za-z0-9_].

Например, /\w/ совпадает с 'a' в "apple," с '5' в "$5.28" и с '3' в "3D."

\W Совпадает с любым не-словом. Эквивалентно [^A-Za-z0-9_].

Например, /\W/ или /[^$A-Za-z0-9_]/ совпадает с '%' в "50%."

\n Где n это положительное целое. обратная ссылка на последнее совпадение подстроки, где n заключённых в скобки в регулярном выражении (включая левую скобку).

Например, /apple(,)\sorange\1/ совпадает с 'apple, orange' в "apple, orange, cherry, peach."

\0 Совпадает с символом NUL. После него не ставьте другую цифру.
\xhh Совпадает с символом с кодом hh (два 16-ричных числа).
\uhhhh Совпадает с символом с кодом hhhh (четыре 16-ричных числа).

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

Конструктор объекта регулярного выражения, например, new RegExp("ab+c"), предоставляет компиляцию регулярного выражения на этапе прогона/runtime. Используйте функцию, если знаете, что патэрн регулярного выражения будет изменяться, или если Вы не знаете патэрн и получаете его из другого источника, такого как ввод от пользователя.

Отдельный предопределённый объект RegExp доступен для каждого окна; то есть каждый отдельный поток выполнения JavaScript получает свой собственный объект RegExp. Поскольку каждый скрипт запускается в потоке без остановки до конца выполнения, это гарантирует, что разные скрипты не перепишут значения объекта RegExp.

Обратите внимание, что некоторые свойства объекта RegExp имеют и длинные, и короткие (Perl-подобные) имена. Оба имени всегда ссылаются на одно и то же значение. Perl это язык программирования, из которого JavaScript смоделировал свои регулярные выражения.


Свойства:


constructor JavaScript 1.1, NES 2.0, ECMA-262
  Чтение/Изменение
 

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

Все объекты наследуют свойство constructor из своих prototype

 
Пример:

o = new Object // или o = {} в JavaScript 1.2
o.constructor == Object
a = new Array // или a = [] в JavaScript 1.2
a.constructor == Array
n = new Number(3)
n.constructor == Number

 
Возвращаемое значение:
Целое число.

input NN 4  IE J3  ECMA n/a
 Чтение/Изменение
 

Основная строка, с которой сравнено регулярное выражение. Если основная строка передана операции регулярного выражения как параметр для метода, это значение - нуль. Короткая версия $_ (долларовый знак, символ подчеркивания).

 
Пример:

RegExp.input = "Four score and seven years ago..."

 
Возвращаемое значение: Строка.

lastMatch NN 4  IE J3  ECMA n/a
 Только чтение
 

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

 
Пример:

var matched = RegExp.lastMatch

 
Возвращаемое значение: Строка.

lastParen NN 4  IE J3  ECMA n/a
 Только чтение
 

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

 
Пример:

var myValue = RegExp.lastParen

 
Возвращаемое значение: Строка.

leftContext, rightContext NN 4  IE J3  ECMA n/a
 Только чтение
 

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

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

 
Пример:

var wholeContext = RegExp.leftContext + RegExp.lastMatch + RegExp.rightContext

 
Возвращаемое значение: Строка.

multiline NN 4  IE J3  ECMA n/a
 Чтение/Изменение
 

Если поиск простирается на несколько строк текста, свойство multiline равно true. Поиск текста, например, в элементе TEXTAREA является multiline. Короткая версия - $*.

 
Пример:

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

 
Возвращаемое значение:
Булево значение

$1, ..., $9 NN 4  IE J3  ECMA n/a
RegExp.$n Только чтение
 

Введенные подкомпоненты регулярного выражения возвращают результаты. Эти результаты сохраняются индивидуально в свойствах, маркированных от 1 до 9, которым предшествует символ shortcut $. Порядок основан на позиции левой круглой скобки подкомпонента: крайний левый подсоставляющий результат помещен в $1. . Регулярное выражение может содержать любое количество выражений в круглых скобках, но в объекте 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. Эти свойства могут использоваться непосредственно как параметры для методов String, которые используют регулярные выражения (см. метод String.replace()).

 
Пример:

RegExp.$2

 
Возвращаемое значение: Строка.

$01, ..., $99 NN n/a   IE 5.5  ECMA n/a
RegExp.$nn Только чтение
 

Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств $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.

 
Пример:

RegExp.$27

 
Возвращаемое значение: Строка.

Методы:


toSource() JavaScript 1.3
toSource()  
 

Возвращает строку исходного кода объекта

 
Возвращаемое значение
Метод toSource возвращает следующие значения:
  • Для встроенного объекта RegExp, toSource возвращает следующую строку, указывающую, что исходный код недоступен:
    function Boolean() {
    [native code]
    }
  • Для экземпляров RegExp, toSource возвращает строку исходного кода объекта
 
Параметры
Нет

toString() JavaScript 1.3
toString()  
 

Возвращает строку, представляющую специфицированный объект.

 
Возвращаемое значение
Строка
 
Параметры
Нет


HIVE: All information for read only. Please respect copyright!
Hosted by hive КГБ: Киевская городская библиотека