regular expression NN 4  IE J3  ECMA n/a

Объект regular expression - экземпляр объекта RegExp. Каждый объект regular expression состоит из образца, который используется, чтобы расположить соответствия в пределах строки. Образцы для регулярного выражения могут быть простыми строками или значительно более мощными выражениями, которые используют примечание, которое является по существу языком к себе. Выполнение регулярных выражений в JavaScript 1.2 очень похоже на пути, которым они осуществлены в Perl. Вы можете читать больше об этих концепциях в книгах, охватывающих JavaScript 1.2.

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

var re = /greet/

Переменная re может тогда использоваться как параметр в различных методах, которые ищут образец в пределах некоторой строки (Эффективнее будет использовать выражение непосредственно как параметр для метода, чем назначение его к переменной).

Примечание регулярного выражения (образец строки) может также состоять из множества метасимволов, что иногда используется в реализации сложных идей, типа границы с обеих сторон слова, любой цифры, или одного или более символов. Например, чтобы искать образец символов, показанных выше, но только тогда, когда образец - слово (и не часть слова), примечание регулярного выражения, использует метасимволы, чтобы указать, что образец включает границы слова с обеих сторон:

var re = /\bgreet\b/

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

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

Например, /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-ричных числа).

Когда Вы создаете регулярное выражение, Вы можете заставить выражение работать глобально (поскольку Вы, вероятно, создаёте регулярное выражение, которое осуществляет операцию поиска и замещения с методом) и игнорировать символы в случае соответствия. Модификаторы, которые включают эти выключатели, - символоы g и i. Они могут использоваться самостоятельно или вместе ( gi ).

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

Регулярные выражения вычисляются аналогично остальным выражениям JavaScript, т. е. с учетом приоритета операций: операции, имеющие больший приоритет, выполняются первыми. Если операции имеют равный приоритет, то они выполняются слева направо. В следующей таблице приведен список операций регулярных выражений в порядке убывания их приоритетов; операции, расположенные в одной строке таблицы, имеют равный приоритет.

Операция
\
() (?:) (?=) (?!) []
* + ? . {n} {n,} {n,m}
^ $ \метасимвол
|
 
Создание объекта regular expression

var regExpressionObj = /pattern/ [g | i | gi] var regExpressionObj = new RegExp(["pattern", ["g" | "i" | "gi"]])


Свойства:


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

Возвращает, имел ли объект набор модификаторов g или i, когда он был создан. Если объект regular expression имеет оба модификатора (gi), Вы должны проверять каждое свойство индивидуально.

 
Пример:

if (myRE.global && myRE.ignoreCase) { ... }

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

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

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

Это свойство устанавливается, только если регулярное выражение использует флаг "g" для указания на глобальный поиск. Применяются следующие правила:

  • Если lastIndex больше, чем размер строки, regexp.test и regexp.exec терпят неудачу, а lastIndex устанавливается в 0.
  • Если lastIndex равен размеру строки и если регулярное выражение совпадает с пустой строкой, то регулярное выражение совпадает с вводом, начиная с lastIndex.
  • Если lastIndex равен размеру строки и если регулярное выражение не совпадает с пустой строкой, то регулярное выражение не совпадает с вводом, и lastIndex устанавливается 0.
  • Иначе, lastIndex устанавливается в следующую позицию после самого последнего совпадение.

Например, рассмотрим последовательность следующих операторов:

re = /(hi)?/g Совпадает с пустой строкой.
re("hi") Возвращает ["hi", "hi"] с lastIndex, который равен 2.
re("hi") Возвращает [""], пустой массив, чей нулевой элемент является совпавшей строкой. В данном случае это пустая строка, поскольку lastIndex был 2 (и всё ещё равен 2), а "hi" имеет размер 2.
 
Пример:

myRE.lastIndex = 30

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

multiline IE 5.5  ECMA n/a
  Чтение/Изменение
 

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

 
Пример:

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

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

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

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

 
Пример:

var myREasString = myRE.source

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

Методы:


compile() NN 4  IE J3  ECMA n/a
compile(pattern[, g | i | gi])  
 

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

 
Возвращаемое значение
Ссылка на объект regular expression .
 
Параметры
pattern Любой образец expression pattern как строка в кавычках.

exec() NN 4  IE J3  ECMA n/a
exec(string)  
 

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

var myRE = /somePattern/ var resultArray = myRE.exec("someString")

Свойства и статического объекта RegExp, и объекта regular expression (myRE, например) изменяются вместе с информацией о результатах поиска. Кроме того, метод exec() возвращает массив данных, свойства которого во многом подобны свойствам объекта RegExp. Возвращенный массив включает следующие свойства:

index
Отсчитываемый от нуля индекс первого символа в строке, которая соответствует образцу

input
Первоначальная отыскиваемая строка

[0]
Строка символов, соответствующих образцу

[1]...[n]
Строки результатов, соответствующая введенному компоненту

Вы можете убирать результаты метода exec() из переменной, принимая во внимание, что свойства объекта RegExp измененяются с каждой операцией regular expression. Если регулярное выражение установлено для поиска глобальной переменной, запрос myRE.exec("someString") продолжит поиск от позиции предыдущего соответствия.

Если для данного запроса никакого соответствия не найдено, exec() возвращает нуль.

 
Возвращаемое значение
Массив соответствий, если успешно; нуль, если нет никаких соответствий.
 
Параметры
string Строка для поиска

test() NN 4  IE J3  ECMA n/a
test(string)  
 

Возвращает true, если есть соответствие регулярному выражению где-нибудь в строке, прошедшей как параметр; false, если нет. Никакая дополнительная информация о результатах поиска недоступна. Это - самый быстрый способ выяснить, соответствует ли образец в пределах строки.

 
Возвращаемое значение
Булево значение.
 
Параметры
string Строка, в которой будет производиться поиск

toString() NN 4  IE J3  ECMA n/a
регулярное_выражение.toString()  
 

Возвращает true, если есть соответствие регулярному выражению где-нибудь в строке, прошедшей как параметр; false, если нет. Никакая дополнительная информация о результатах поиска недоступна. Это - самый быстрый способ выяснить, соответствует ли образец в пределах строки.

 
Возвращаемое значение
Булево значение.
 
Параметры
string Строка, в которой будет производиться поиск


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