[Содержание] [Предыдущая] [Следующая] [Индекс]

RegExp

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

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

Основной Объект
Реализовано в Navigator 4.0, Netscape Server 3.0

Создание

Литеральный текстовый формат или функция конструктор RegExp.

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

/pattern/flags
Функция конструктор используется следующим образом:

new RegExp("pattern", "flags")

Параметры

pattern
Текст регулярного выражения.
flags
(Факультативный) Если определен, флаги могут иметь один из следующих 3 значений:

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

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

Описание

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

re = new RegExp("\\w+")
re = /\w+/
Таблица 4.3 обеспечивает полный список и описание специальных символов, которые могут использоваться в регулярных выражениях.

Таблица 4.3 Специальные символы в регулярных выражениях. 
Символ Значение
\
Для символов, которые обычно обрабатываются буквально, указывает, что следующий символ специальный и не интерпретируется буквально. Например, /b/ соответствует символу 'b'. При помещении наклонной черты перед b, /\b/, символ становится специальным, и означает соответствие границе слова. -или- Для символов, которые обычно обрабатываются как специальные, указывает, что следующий символ не специальный и должен интерпретироваться буквально. Например, * является специальным символом, который означает 0 или более местонахождений предшествующего символа должно быть найдено; например, /a*/ соответствует 0 или более a. Чтобы соответствовать * буквально, предварите звездочку наклонной чертой влево; например, /a\*/ соответствует 'a*'.
^
Соответствует началу ввода или строки. Например, /^A/ не соответствует 'A' в "an A," но соответствует в "An A."
$
Соответствует концу ввода или строки. Например, /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?l?/ соответствует '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|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]
Соответствует возврату на один символ. (Не путайте с \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 управляющий символ. Соответствует управляющему символу в строке. Например, /\cM/ соответствует control-M в строке.
\d
Соответствует символу цифры. Эквивалентно [0-9]. Например, /\d/ или /[0-9]/ соответствует '2' в "B2 is the suite number."
\D
Соответствует любому символу не-цифры. Эквивалентно [^0-9]. Например, /\D/ or /[^0-9]/ соответствует 'B' в "B2 is the suite number."
\f
Соответствует переводу страницы.
\n
Соответствует переводу строки.
\r
Соответствует возврату каретки.
\s
Соответствует одиночному символу незаполненного пространства, включая пробел, табуляцию, перевод страницы, перевод строки. Эквивалентно [ \f\n\r\t\v]. Например, /\s\w*/ соответствует ' bar' в "foo bar."
\S
Соответствует одиночному символу, отличному от незаполненного пространства. Эквивалентно [^ \f\n\r\t\v]. Например, /\S/\w* соответствует 'foo' в "foo bar."
\t
Соответствует табуляции.
\v
Соответствует вертикальной табуляции.
\w
Соответствует любому алфавитно-цифровому символу, включая символ подчеркивания. Эквивалентно [A-Za-z0-9_]. Например, /\w/ соответствует 'a' в "apple," '5' в "$5.28" и '3' в "3D."
\W 
Соответствует любому не алфавитно-цифровому символу. Эквивалентно [^A-Za-z0-9_]. Например, /\W/ or /[^$A-Za-z0-9_]/ соответствует '%' в "50%."
\n
Где n положительное целое число. Ссылка к последней подстроке, соответствующей n круглой скобке в регулярном выражении (считает левые круглые скобки). Например, /apple(,)\sorange\1/ соответствует 'apple, orange', в "apple, orange, cherry, peach." Более полный пример следует за этой таблицей. Обратите внимание: Если количество левых круглых скобок меньше чем число, определенное в \n, \n принимается как восьмеричное escape значение, как описано в следующей строке.
\ooctal
\xhex
Где \ooctal восьмеричное значение escape или \xhex шестнадцатеричное значение escape. Позволяет Вам внедрять коды ASCII в регулярные выражения.

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

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

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

Предопределенный объект RegExp содержит статические свойства input, multiline, lastMatch, lastParen, leftContext, rightContext и от $1 до $9. Свойства input и multiline могут быть предварительно установлены. Значения других статических свойств устанавливаются после выполнения методов exec и test индивидуального объекта регулярного выражения, и после выполнения методов match и replace объекта String.

Резюме Свойств

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

$1, ..., $9
Заключенные в круглые скобки подстроки соответствия, если существуют.
$_
Смотрите input.
$*
Смотрите multiline.
$&
Смотрите lastMatch.
$+
Смотрите lastParen.
$`
Смотрите leftContext.
$'
Смотрите rightContext.
global
Проверять ли регулярное выражение со всеми возможными соответствиями в строке, или только с первым.
ignoreCase
Игнорировать ли регистр при попытке соответствия в строке.
input
Строка, с которой регулярное выражение согласовывается.
lastIndex
Индекс, с которого начать следующее соответствие.
lastMatch
Последние согласованные символы.
lastParen
Последняя заключенная в круглые скобки подстрока соответствия, если имеется.
leftContext
Подстрока, предшествующая последниму соответствию.
multiline
Искать ли соответствие в нескольких строках.
rightContext
Подстрока после самого последнего соответствия.
source
Текст образца.

Резюме Методов

compile
Компилирует объект регулярного выражения.
exec
Выполняет поиск соответствия в строковом параметре.
test
Испытания на соответствие в строковом параметре.

Примеры

Пример 1. Следующий сценарий использует метод replace, чтобы заменить слова в строке. Для заменяемого текста, сценарий использует значения свойств $1 и $2 глобального объекта RegExp. Обратите внимание, что имя объекта RegExp не может предшествовать свойствам $, когда они передаются как параметры методу replace.

<SCRIPT LANGUAGE="JavaScript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
Это показывает "Smith, John".

Пример 2. В следующем примере, RegExp.input устанавливается событием Change. В функции getInfo, метод exec использует значение RegExp.input в качестве параметра. Обратите внимание, что RegExp предшествует свойствам $.

<HTML>
<SCRIPT LANGUAGE="JavaScript1.2">
function getInfo() {
   re = /(\w+)\s(\d+)/;
   re.exec();
   window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</SCRIPT>
Enter your first name and your age, and then press Enter.
<FORM>
<INPUT TYPE:"TEXT" NAME="NameAge" onChange="getInfo(this);">
</FORM>
</HTML>

Свойства

$1, ..., $9

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

Свойство объекта RegExp
Статическое, Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

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

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

Эти свойства могут использоваться в заменяемом тексте в методе String.replace. Когда используется этот способ, не предваряйте их RegExp. Пример ниже иллюстрирует это. Когда круглые скобки не включены в регулярное выражение, сценарий интерпретирует $n литералы (где n положительное целое число).

Примеры

Следующий сценарий использует метод replace для включения слова в строку. Для заменяемого текста, сценарий использует значения свойств $1 и $2 глобального объекта RegExp. Обратите внимание, что имя объекта RegExp не предваряет свойства $, когда они передаются как второй параметр метода replace.

<SCRIPT LANGUAGE="JavaScript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
Это показывает "Smith, John".

$_

Смотрите input.

$*

Смотрите multiline.

$&

Смотрите lastMatch.

$+

Смотрите lastParen.

$`

Смотрите leftContext.

$'

Смотрите rightContext.

global

Использовать или нет флаг "g" в регулярном выражении.

Свойство объекта RegExp
Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

global это свойство индивидуального объекта регулярного выражения.

Значение global равно true, если флаг "g" используется; иначе, false. Флаг "g" указывает, что регулярное выражение должно быть проверено со всеми возможными соответствиями в строке.

Вы не можете изменять это свойство непосредственно. Однако, при вызове метод compile изменяет значение этого свойства.

ignoreCase

Использовать или нет флаг "i" в регулярном выражении.

Свойство объекта RegExp
Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

ignoreCase это свойство индивидуального объекта регулярного выражения.

Значение ignoreCase равно true, если флаг "i" используется; иначе, false. Флаг "i" указывает, что регистр должен игнорироваться при попытке соответствия в строке.

Вы не можете изменять это свойство непосредственно. Однако, при вызове метод compile изменяет значение этого свойства.

input

Строка, с которой регулярное выражение согласовано. $_ другое имя для этого же свойства.

Свойство объекта RegExp
Статическое
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

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

Если никакой строковый параметр не обеспечивается методам exec или test регулярного выражения, и если RegExp.input имеет значение, это значение используется как параметр для этих методов.

Сценарий или браузер могут предварительно установить свойство input. Если свойство предварительно установлено и если никакой строковый параметр явно не обеспечивается, значение input используется как строковый параметр методов exec или test объекта регулярного выражения. input устанавливается браузером в следующих случаях:

Значение свойства input очищается после завершения обработчика события.

lastIndex

Целочисленное свойство для чтения/записи, которое определяет индекс, с которого начать следующее соответствие.

Свойство объекта RegExp
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

lastIndex свойство индивидуального объекта регулярного выражения.

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

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

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

lastMatch

Последние согласованные символы. $& другое имя для этого же свойства.

Свойство объекта RegExp
Статическое, Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

Так как lastMatch статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.lastMatch.

lastParen

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

Свойство объекта RegExp
Статическое, Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

Так как lastParen статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.lastParen.

leftContext

Подстрока, предшествующая самому последнему соответствию. $` другое имя для этого же свойства.

Свойство объекта RegExp
Статическое, Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

Так как leftContext статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.leftContext.

multiline

Отражает, искать ли в нескольких строках. $* другое имя для этого же свойства.

Свойство объекта RegExp
Статическое
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

Так как multiline статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.multiline.

Значение multiline равно true, если поиск происходит в нескольких строках, false, если поиск останавливается в конце строки.

Сценарий или браузер может предварительно установить свойство multiline. Когда обработчик события вызывается для элемента TEXTAREA формы, браузер устанавливает multiline в true. multiline очищается после завершения обработчика события. Это означает, что если Вы предварительно установили multiline в true, оно будет сброшено в false после выполнения любого обработчика события.

rightContext

Подстрока после самого последнего соответствия. $' другое имя для этого же свойства.

Свойство объекта RegExp
Статическое, Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

Так как rightContext статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.rightContext.

source

Свойство только для чтения, которое содержит текст образца, исключая косые черты и флаги "g" или "i".

Свойство объекта RegExp
Только для чтения
Реализовано в Navigator 4.0, Netscape Server 3.0

Описание

source это свойство индивидуального объекта регулярного выражения.

Вы не можете изменять это свойство непосредственно. Однако, при вызове метод compile изменяет значение этого свойства.

Методы

compile

Компилирует объект регулярного выражения во время выполнения сценария.

Метод объекта RegExp
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

regexp.compile(pattern, flags)

Параметры

regexp
Имя регулярного выражения. Это может быть имя переменной или литерал.
pattern
Строка, содержащая текст регулярного выражения.
flags
(Факультативный) Если определен, флаги могут иметь один из следующих 3 значений:

Описание

Используйте метод compile для компиляции регулярного выражения, созданного функцией конструктором RegExp. Он вынуждает трансляцию регулярного выражения только один раз, и это означает, что регулярное выражение не компилируется каждый раз, когда встречается. Используйте метод compile когда Вы знаете, что регулярное выражение останется постоянным (при получении образца) и будет использоваться сценарием неоднократно.

Вы можете также использовать метод compile для изменения регулярного выражения во время выполнения. Например, если регулярное выражение изменяется, Вы можете использовать метод compile, чтобы перекомпилировать объект для более эффективного многократного использования.

Вызов этого метода изменяет значения свойств source, global и ignoreCase регулярного выражения.

exec

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

Метод объекта RegExp
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

regexp.exec(str)
regexp(str)

Параметры

regexp
Имя регулярного выражения. Это может быть имя переменной или литерал.
str
(Факультативный) Строка для соответствия регулярному выражению. Если опущен, используется значение RegExp.input.

Описание

Как показано в описании синтаксиса, метод exec регулярного выражения может быть вызван или непосредственно (regexp.exec(str)) или косвенно (regexp(str)).

Если Вы выполняете соответствие просто, чтобы найти true или false, используйте метод test или метод search объекта String.

Если соответствие найдено, метод exec возвращает массив и модифицирует свойства объекта регулярного выражения и предопределенного объекта регулярного выражения RegExp. Если соответствие не найдено, метод exec возвращает null.

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

<SCRIPT LANGUAGE="JavaScript1.2">
//Соответствие одному d, сопровождаемому одним или больше b, сопровождаемого одним d
//Запоминает согласованные b и следующий d
//Игнорирует регистр
myRe=/d(b+)(d)/ig;
myArray = myRe.exec("cdbBdbsbz");
</SCRIPT>
Следующая таблица показывает результаты этого сценария:

Объект Свойство/Индекс Описание Пример
myArray
Содержимое myArray ["dbBd", "bB", "d"]
index
0-основанный индекс соответствия в строке 1
input
Первоначальная строка cdbBdbsbz
[0]
Последние согласованные символы dbBd
[1], ...[n]
Заключенные в круглые скобки подстроки соответствия, если имеются. Число возможных заключенных в круглые скобки подстрок безграничен. [1] = bB
[2] = d
myRe
lastIndex
Индекс, с которого начать следующее соответствие. 5
ignoreCase
Указывает, использовался ли флаг "i" чтобы игнорировать регистр. true
global
Указывает, использовался ли флаг "g" для глобального соответствия. true
source
Текст образца d(b+)(d)
RegExp
lastMatch
$&
Последние согласованные символы dbBd
leftContext
$\Q
Подстрока, предшествующая самому последнему соответствию c
rightContext
$'
Подстрока после самого последнего соответствия bsbz
$1, ...$9
Заключенные в круглые скобки подстроки соответствия, если существуют. Число возможных заключенных в круглые скобки подстрок безграничен, но RegExp может содержать только последние девять. $1 = bB 
$2 = d
lastParen  
$+
Последняя заключенная в круглые скобки подстрока соответствия, если существует. d

Если Ваше регулярное выражение использует флаг "g", Вы можете использовать метод exec множество раз, чтобы найти последовательные соответствия в той же самой строке. Когда Вы делаете так, поиск начинается в подстроке str определенной, как свойство lastIndex регулярного выражения. Например, Вы имеете этот сценарий:

<SCRIPT LANGUAGE="JavaScript1.2">
myRe=/ab*/g;
str = "abbcdefabh"
myArray = myRe.exec(str);
document.writeln("Found " + myArray[0] +
   ". Next match starts at " + myRe.lastIndex)
mySecondArray = myRe.exec(str);
document.writeln("Found " + mySecondArray[0] +
   ". Next match starts at " + myRe.lastIndex)
</SCRIPT>
Этот сценарий показывает следующий текст:

Found abb. Next match starts at 3
Found ab. Next match starts at 9

Примеры

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

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

<HTML>
<SCRIPT LANGUAGE="JavaScript1.2">
A = ["Frank", "Emily", "Jane", "Harry", "Nick", "Beth", "Rick",
      "Terrence", "Carol", "Ann", "Terry", "Frank", "Alice", "Rick",
      "Bill", "Tom", "Fiona", "Jane", "William", "Joan", "Beth"]
function lookup() {
   firstName = /\w+/i();
   if (!firstName)
      window.alert (RegExp.input + " isn't a name!");
   else {
      count = 0;
      for (i=0; i<A.length; i++)
         if (firstName[0].toLowerCase() == A[i].toLowerCase()) count++;
      if (count ==1)
         midstring = " other has ";
      else
         midstring = " others have ";
      window.alert ("Thanks, " + count + midstring + "the same name!")
   }
}
</SCRIPT>
Enter your first name and then press Enter.
<FORM> <INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"> </FORM>
</HTML>

test

Выполняет поиск соответствия между регулярным выражением и определенной строкой. Возвращает true или false.

Метод объекта RegExp
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

regexp.test(str)

Параметры

regexp
Имя регулярного выражения. Это может быть имя переменной или литерал.
str
(Факультативный) Строка, чтобы соответствовать регулярному выражению. Если опущено, используется значение RegExp.input.

Описание

Когда Вы хотите знать, найден ли образец в строке, используюйте метод test (подобно методу String.search); для подробной информации (но более медленного выполнения) используйте метод exec (подобно методу String.match).

Example

Следующий пример печатает сообщение, которое зависит от успеха теста:

function testinput(re, str){
   if (re.test(str))
      midstring = " contains ";
   else
      midstring = " does not contain ";
   document.write (str + midstring + re.source);
}


[Содержание] [Предыдущая] [Следующая] [Индекс]

Последняя Модификация: 10/31/97 12:30:31


Права © 1997 Netscape Communications Corporation



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz