Ядро JavaScript 1.5. Справочник

Replace


Находит совпадение между регулярным выражением и строкой и заменяет совпавшую подстроку новой подстрокой.

Метод из

Реализован вJavaScript 1.2

JavaScript 1.3: добавлена возможность специфицировать функцию в качестве второго параметра.

Версия ECMA

ECMA-262 Edition 3

Синтаксис

replace(regexp, newSubStr)

replace(regexp, function)

Версии до JavaScript 1.3:

replace(regexp, newSubStr)



Параметры

regexp

Имя регулярного выражения. Это может быть имя переменной или литерал.

newSubStr

Строка, размещаемая вместо строки, найденной с помощью regexp.

functionФункция, вызываемая после выполнения совпадения.


Описание

Этот метод не изменяет String-объект, в котором он вызывается. Он просто возвращает новую строку.

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

 

Специфицирование строки в качестве параметра.

Замещающая строка может содержать следующие специальные патэрны замещения:

$$

Вставляет '$'.

$&Вставляет совпавшую подстроку.

$`Вставляет часть строки, предшествующую совпавшей подстроке.

Вставляет часть строки, следующую после совпавшей подстроки.

$n или $nn

Где n или nn это десятеричные числа, вставляет подстроку n-ного совпадения в скобках.


Специфицирование функции в качестве параметра.

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

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

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

Например, это метод replace возвращает XX.zzzz - XX , zzzz.

"XXzzzz".replace(/(X*)(z*)/,

     function (str, p1, p2, offset, s) {

        return str + " - " + p1 + " , " + p2;

     }

  )

Обратная Совместимость


JavaScript 1.2.

Вы не можете специфицировать функцию, которая вызывается после выполнения совпадения.

Примеры

Пример 1.

В этом примере регулярное выражение содержит флаги глобальный и игнорирования регистра, что позволяет методу replace заменить каждое появление 'apples' в строке на 'oranges.'

<SCRIPT>

re = /apples/gi;

str = "Apples are round, and apples are juicy.";

newstr=str.replace(re, "oranges");

document.write(newstr)

</SCRIPT>

Будет напечатано "oranges are round, and oranges are juicy."

 
Пример 2.

В этом примере регулярное выражение определено в replace и содержит флаг игнорирования регистра.

<SCRIPT>

str = "Twas the night before Xmas...";

newstr=str.replace(/xmas/i, "Christmas");

document.write(newstr)

</SCRIPT>

Будет напечатано "Twas the night before Christmas..."

Пример 3.

Этот скрипт переключает слова в строке. Для замещающего текста ,скрипт использует патэрны замещения $1 и $2.

<SCRIPT LANGUAGE="JavaScript1.2">

re = /(\w+)\s(\w+)/;

str = "John Smith";

newstr = str.replace(re, "$2, $1");

document.write(newstr)

</SCRIPT>

Будет напечатано "Smith, John".

Пример 4.

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

Функция возвращает градусы по Цельсию, оканчивающиеся буквой C. Например, если параметр ввода будет 212F, функция возвратит 100C. Если будет задано число 0F, функция возвратит -17.77777777777778C.

Регулярное выражение проверяет любые числа, оканчивающиеся на F. Число градусов по Фаренгейту доступно для Вашей функции через параметр $1. Функция устанавливает градусы по Цельсию, базируясь на градусах по Фаренгейту, переданных в строке функции f2c. f2c возвращает затем градусы по Цельсию. Эта функция приблизительно соответствует флагу s///e в Perl.

function f2c(x) {

 var s = String(x)

 var test = /(\d+(?:\.\d*)?)F\b/g

 return s.replace

    (test,

       function (str,p1,offset,s) {

          return ((p1-32) * 5/9) + "C";

       }

    )

}



Содержание раздела