Метод replace()

Содержание

Содержание

  • mb_check_encoding — Проверяет, что кодировка строк выбрана верно
  • mb_chr — Получает определенный символ
  • mb_convert_case — Производит смену регистра символов в строке
  • mb_convert_encoding — Преобразует кодировку символов
  • mb_convert_kana — Преобразование кодировок «kana» из одной в другую («zen-kaku», «han-kaku» и другие)
  • mb_convert_variables — Преобразует символы в переменной(-ых) из одной кодировки в другую
  • mb_decode_mimeheader — Декодирует строку в MIME-заголовке
  • mb_decode_numericentity — Декодирует ссылку на числовую строку HTML в символ
  • mb_detect_encoding — Определение кодировки символов
  • mb_detect_order — Установка/получение списка кодировок для механизмов определения кодировки
  • mb_encode_mimeheader — Кодирует строку для MIME-заголовка
  • mb_encode_numericentity — Кодирует символ в числовую HTML-ссылку
  • mb_encoding_aliases — Получает псевдонимы известного типа кодировки
  • mb_ereg_match — Совпадение с регулярным выражением для многобайтовой строки
  • mb_ereg_replace_callback — Выполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок используя callback-функцию
  • mb_ereg_replace — Осуществляет замену по регулярному выражению с поддержкой многобайтовых кодировок
  • mb_ereg_search_getpos — Возвращает начальную позицию следующего совпадения с регулярным выражением
  • mb_ereg_search_getregs — Выводит результат последнего сравнения с регулярным выражением
  • mb_ereg_search_init — Инициализация поиска соответствий регулярному выражению многобайтовой строкой и текстом регулярного выражения
  • mb_ereg_search_pos — Возвращает позицию и длину совпавшего с регулярным выражением участка многобайтовой строки
  • mb_ereg_search_regs — Возвращает совпавшую с регулярным выражением часть строки
  • mb_ereg_search_setpos — Задает начальную позицию в строке, с которой начнется поиск соответствий регулярному выражению
  • mb_ereg_search — Поиск соответствий регулярному выражению для строк в многобайтовых кодировках
  • mb_ereg — Совпадение с регулярным выражением с поддержкой многобайтовых кодировок
  • mb_eregi_replace — Осуществляет замену по регулярному выражению с поддержкой многобайтовых символов без учета регистра
  • mb_eregi — Поиск соответствий регулярному выражению с поддержкой многобайтовых символов без учета регистра
  • mb_get_info — Получает внутренние настройки mbstring
  • mb_http_input — Определение кодировки символов входных данных HTTP-запроса
  • mb_http_output — Установка/получение кодировки символов вывода HTTP
  • mb_internal_encoding — Установка/получение внутренней кодировки скрипта
  • mb_language — Устанавливает/получает текущий язык
  • mb_list_encodings — Возвращает массив всех поддерживаемых кодировок
  • mb_ord — Получает кодовую точку символа
  • mb_output_handler — Callback-функция, преобразующая кодировку символов в выходном буфере
  • mb_parse_str — Разбор данных запросов GET/POST/COOKIE и установка значений глобальных переменных
  • mb_preferred_mime_name — Получение набора символов MIME
  • mb_regex_encoding — Устанавливает/получает текущую кодировку для многобайтового регулярного выражения
  • mb_regex_set_options — Установка/получение значений по умолчанию для настроек функций mbregex
  • mb_scrub — Описание
  • mb_send_mail — Отправка закодированного сообщения
  • mb_split — Разделение строк в многобайтных кодировках, используя регулярное выражение
  • mb_str_split — Если задана многобайтовая строка возвращает массив символов
  • mb_strcut — Получение части строки
  • mb_strimwidth — Получение строки, обрезанной до заданного размера
  • mb_stripos — Регистронезависимый поиск позиции первого вхождения одной строки в другую
  • mb_stristr — Находит первое вхождение подстроки в строке без учета регистра
  • mb_strlen — Получает длину строки
  • mb_strpos — Поиск позиции первого вхождения одной строки в другую
  • mb_strrchr — Поиск последнего вхождения одной строки в другую
  • mb_strrichr — Поиск последнего вхождения одной строки в другую, нечувствительный к регистру
  • mb_strripos — Поиск последнего вхождения одной строки в другую, нечувствительный к регистру
  • mb_strrpos — Поиск позиции последнего вхождения одной строки в другую
  • mb_strstr — Находит первое вхождение подстроки в строке
  • mb_strtolower — Приведение строки к нижнему регистру
  • mb_strtoupper — Приведение строки к верхнему регистру
  • mb_strwidth — Возвращает ширину строки
  • mb_substitute_character — Установить/получить символ замены
  • mb_substr_count — Возвращает количество вхождений подстроки
  • mb_substr — Возвращает часть строки

Примеры выраженийExpression Examples

В данном примере используется строковый литерал.This example uses a string literal. Результат — «All Terrain Bike».The return result is «All Terrain Bike».


Этот пример удаляет строку «Bike» из столбца Product .This example removes the string «Bike» from the Product column.

Этот пример заменяет значения в столбце DaysToManufacture .This example replaces values in the DaysToManufacture column. Эта столбец содержит целочисленный тип данных, а выражение включает приведение значений столбца DaysToManufacture к типу данных DT_WSTR.The column has an integer data type and the expression includes casting DaysToManufacture to the DT_WSTR data type.

JavaScript

JS Array concat() constructor copyWithin() entries() every() fill() filter() find() findIndex() forEach() from() includes() indexOf() isArray() join() keys() length lastIndexOf() map() pop() prototype push() reduce() reduceRight() reverse() shift() slice() some() sort() splice() toString() unshift() valueOf()

JS Boolean constructor prototype toString() valueOf()

JS Classes constructor() extends static super

JS Date constructor getDate() getDay() getFullYear() getHours() getMilliseconds() getMinutes() getMonth() getSeconds() getTime() getTimezoneOffset() getUTCDate() getUTCDay() getUTCFullYear() getUTCHours() getUTCMilliseconds() getUTCMinutes() getUTCMonth() getUTCSeconds() now() parse() prototype setDate() setFullYear() setHours() setMilliseconds() setMinutes() setMonth() setSeconds() setTime() setUTCDate() setUTCFullYear() setUTCHours() setUTCMilliseconds() setUTCMinutes() setUTCMonth() setUTCSeconds() toDateString() toISOString() toJSON() toLocaleDateString() toLocaleTimeString() toLocaleString() toString() toTimeString() toUTCString() UTC() valueOf()

JS Error name message

JS Global decodeURI() decodeURIComponent() encodeURI() encodeURIComponent() escape() eval() Infinity isFinite() isNaN() NaN Number() parseFloat() parseInt() String() undefined unescape()

JS JSON parse() stringify()

JS Math abs() acos() acosh() asin() asinh() atan() atan2() atanh() cbrt() ceil() cos() cosh() E exp() floor() LN2 LN10 log() LOG2E LOG10E max() min() PI pow() random() round() sin() sqrt() SQRT1_2 SQRT2 tan() tanh() trunc()

JS Number constructor isFinite() isInteger() isNaN() isSafeInteger() MAX_VALUE MIN_VALUE NEGATIVE_INFINITY NaN POSITIVE_INFINITY prototype toExponential() toFixed() toLocaleString() toPrecision() toString() valueOf()

JS OperatorsJS RegExp constructor compile() exec() g global i ignoreCase lastIndex m multiline n+ n* n? n{X} n{X,Y} n{X,} n$ ^n ?=n ?!n source test() toString() (x|y) . \w \W \d \D \s \S \b \B \0 \n \f \r \t \v \xxx \xdd \uxxxx

JS Statements break class continue debugger do…while for for…in for…of function if…else return switch throw try…catch var while

JS String charAt() charCodeAt() concat() constructor endsWith() fromCharCode() includes() indexOf() lastIndexOf() length localeCompare() match() prototype repeat() replace() search() slice() split() startsWith() substr() substring() toLocaleLowerCase() toLocaleUpperCase() toLowerCase() toString() toUpperCase() trim() valueOf()

См. также:See Also

CONCAT (Transact-SQL)CONCAT (Transact-SQL)CONCAT_WS (Transact-SQL)CONCAT_WS (Transact-SQL)FORMATMESSAGE (Transact-SQL)FORMATMESSAGE (Transact-SQL)QUOTENAME (Transact-SQL)QUOTENAME (Transact-SQL)REVERSE (Transact-SQL)REVERSE (Transact-SQL)STRING_AGG (Transact-SQL)STRING_AGG (Transact-SQL)STRING_ESCAPE (Transact-SQL)STRING_ESCAPE (Transact-SQL)STUFF (Transact-SQL)STUFF (Transact-SQL)TRANSLATE (Transact-SQL)TRANSLATE (Transact-SQL)Типы данных (Transact-SQL) Data Types (Transact-SQL) Строковые функции (Transact-SQL)String Functions (Transact-SQL)

Примеры

Пример: использование флагов и с методом

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

var re = /яблоки/gi;
var str = 'Яблоки круглые и яблоки сочные.';
var newstr = str.replace(re, 'апельсины');
console.log(newstr); // апельсины круглые и апельсины сочные.

Пример: передача регулярного выражения в метод

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

// Ночь перед Рождеством, Xmas - сокращение для Christmas
var str = 'Twas the night before Xmas...';
var newstr = str.replace(/xmas/i, 'Christmas');
console.log(newstr); // Twas the night before Christmas...

Пример выведет строку ‘Twas the night before Christmas…’

Пример: смена местами слов в строке

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

var re = /(+)\s(+)/;
var str = 'Джон Смит';
var newstr = str.replace(re, '$2, $1');
console.log(newstr); // Смит, Джон

Пример выведет строку ‘Смит, Джон’.

Пример: использование функции для изменения сопоставившихся символов

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

Здесь важно то, что прежде чем элемент вставится в качестве замены, над ним нужно провести дополнительные преобразования

Функция замены своим параметром принимает сопоставившийся кусок и перед возвратом использует его для преобразования регистра и соединения с дефисом.

function styleHyphenFormat(propertyName) {
  function upperToHyphenLower(match) {
    return '-' + match.toLowerCase();
  }
  return propertyName.replace(//g, upperToHyphenLower);
}

Вызов вернёт строку ‘border-top’.

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

var newString = propertyName.replace(//g, '-' + '$&'.toLowerCase());  // не работает

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

Пример: замена градусов по Фаренгейту на эквивалент в градусах по Цельсию

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

Регулярное выражение сопоставляется с любым числом, оканчивающимся на букву F. Количество градусов по Фаренгейту передаётся в функцию через её второй параметр, . Функция переводит градусы по Фаренгейту, переданные в виде строки в функцию code>f2c(), в градусы по Цельсию. Затем функция возвращает количество градусов по Цельсию. Эта функция работает примерно так же, как и флаг в Perl.

function f2c(x) {
  function convert(str, p1, offset, s) {
    return ((p1 - 32) * 5/9) + 'C';
  }
  var s = String(x);
  var test = /(\d+(?:\.\d*)?)F\b/g;
  return s.replace(test, convert);
}

Пример: использование функции вместе с регулярным выражением для избавления от цикла

Следующий пример принимает строку шаблона и преобразует её в массив объектов.

Входные данные:

Строка, состоящая из символов , и

x-x_
x---x---x---x---
x-xxx-xx-x-
x_x_x___x___x___

Выходные данные:

Массив объектов. Символ означает состояние , символ (дефис) означает состояние , а символ (нижнее подчёркивание) означает продолжительность состояния .

Код:

var str = 'x-x_';
var retArr = [];
str.replace(/(x_*)|(-)/g, function(match, p1, p2) {
  if (p1) { retArr.push({ on: true, length: p1.length }); }
  if (p2) { retArr.push({ on: false, length: 1 }); }
});

console.log(retArr);

Этот код сгенерирует массив из трёх объектов в описанном формате без использования цикла .

English[edit]

Verbedit

replace (third-person singular simple present , present participle , simple past and past participle )

  1. () To restore to a former place, position, condition, etc.; to put back
    When you’ve finished using the telephone, please replace the handset.

    1622, Francis Bacon, History of the Reign of King Henry VII The earl…was replaced in his government.

  2. () To refund; to repay; to pay back
    You can take what you need from the petty cash, but you must replace it tomorrow morning.
  3. () To supply or substitute an equivalent for
    I replaced my car with a newer model.
    The batteries were dead so I replaced them
  4. () to take over the position or role

    2012 September 20, Andrew Brown, “Archbishop of Canterbury succession race begins in earnest”, in The Guardian (online)‎: Next Wednesday, four women and 15 men on the Crown Nominations Commission will gather for two days of prayer and horsetrading to replace Rowan Williams as archbishop of Canterbury.

    from.
  5. () To take the place of; to be used instead of
    This security pass replaces the one you were given earlier.

    1845, William Whewell, The Elements of Morality: Including Polity This duty of right intention does not replace or supersede the duty of consideration.

  6. () To demolish (a building) and build an updated form of that building in its place.
  7. (, rare) To place again.
  8. (, rare) To put in a new or different place.

Translationsedit


to restore or return to a previous location

  • Greek:  (el) (anatopothetó)
  • Hungarian: visszatesz (hu), visszarak (hu)
  • Ido: ripozar, rilokizar (io)
  • Maori: whakahoki, āki
  • Portuguese:  (pt)

to substitute

  • Arabic: ‎ (istabdala), ‎ (ar) (baddala)
  • Azerbaijani:  (az),
  • Belarusian: замяня́ць impf (zamjanjácʹ), замяні́ць pf (zamjanícʹ)
  • Bulgarian: заме́ням impf (zaménjam), заменя́ (bg) pf (zamenjá)
  • Catalan:  (ca)
  • Chinese:
    Mandarin:  (zh) (qǔdài),  (zh),  (zh) (chèhuàn),  (zh) (jiāotì),  (zh) (tìdài),  (zh),  (zh) (gēnghuàn),  (zh) (dàitì)
  • Crimean Tatar:
  • Czech:  (cs)
  • Danish:
  • Dutch:  (nl)
  • Esperanto:
  • Estonian:
  • Finnish:  (fi)
  • French:  (fr)
  • Georgian: გამოცვლა (gamocvla)
  • German:  (de)
  • Greek:  (el) (antikathistó)
  • Hungarian:  (hu), lecserél (hu),  (hu),  (hu)
  • Ido:  (io)
  • Italian:  (it), ,  (it)
  • Japanese: (とりかえる, torikaeru)
  • Korean:  (ko) (gyoche-hada),  (ko) (daesin-hada), 대체하다 (ko) (daeche-hada)
  • Macedonian: (zamenuva)
  • Malay:
  • Maori: whakakapi, rīwhi
  • Middle English:
  • Norman:
  • Norwegian:
    Bokmål:  (no), , , bytte ut
    Nynorsk: , ,
  • Occitan:
  • Persian: جایگزین کردن‎ (fa) (jâygozin kardan)
  • Polish:  (pl), zamieniać (pl) impf, zamienić (pl) pf
  • Portuguese:  (pt)
  • Romanian:  (ro),  (ro)
  • Russian:  (ru) impf (zamenjátʹ),  (ru) pf (zamenítʹ), (fill in)  (ru) impf (zameščátʹ),  (ru) pf (zamestítʹ)
  • Serbo-Croatian:  (sh)
  • Spanish:  (es)
  • Swedish:  (sv), byta ut (sv),  (sv), byta mot
  • Ukrainian: заміня́ти impf (zaminjáty), заміни́ти pf (zaminýty), замі́нювати impf (zamínjuvaty)
  • Vietnamese:  (vi)

to take over the position or role from

to take the place of; to be used instead of

percale

RemarksRemarks

  • При замене добавляет или заменяет файлы имена файлов отображаются на экране.As replace adds or replaces files, the file names are displayed on the screen. После завершения замены строка сводки отображается в одном из следующих форматов:After replace is finished, a summary line is displayed in one of the following formats:

  • Если используются гибкие диски и необходимо переключить диски во время операции замены , можно указать параметр командной строки /w , чтобы функция Replace предложит переключить диски.If you are using floppy disks and you need to switch disks during the replace operation, you can specify the /w command-line option so that replace will wait for you to switch the disks.
  • Нельзя использовать Replace для обновления скрытых файлов или системных файлов.You cannot use replace to update hidden files or system files.
  • В следующей таблице показан каждый код выхода и краткое описание его значения.The following table shows each exit code and a brief description of its meaning: |Код выходаExit code|ОписаниеDescription| |———|————| ||Команда Replace успешно заменила или добавила файлы.The replace command successfully replaced or added the files.| |11|В команде Replace обнаружена неправильная версия MS-DOS.The replace command encountered an incorrect version of MS-DOS.| |22|Команде Replace не удалось найти исходные файлы.The replace command could not find the source files.| |33|Команде Replace не удалось найти исходный или конечный путь.The replace command could not find the source or destination path.| |55|Пользователь не имеет доступа к файлам, которые необходимо заменить.The user does not have access to the files that you want to replace.| |88|Недостаточно системной памяти для выполнения команды.There is insufficient system memory to carry out the command.| |1111|Пользователь использовал неправильный синтаксис в командной строке.The user used the wrong syntax on the command line.|

Примечание

Можно использовать параметр ERRORLEVEL в командной строке If в пакетной программе для обработки кодов завершения, возвращаемых функцией Replace.You can use the ERRORLEVEL parameter on the if command line in a batch program to process exit codes that are returned by replace.

Опис

Цей метод не змінює об’єкт , що його викликав. Він просто повертає новий рядок.

Щоб виконати глобальний пошук та заміну, використовуйте перемикач  у регулярному виразі.

Використання рядка в якості параметра

Рядок заміни може містити наступні спеціальні шаблони заміни:

Шаблон Вставляє
Вставляє .
Вставляє знайдений підрядок.
Вставляє частину рядка, що передує знайденому підрядку.
Вставляє частину рядка, що розташована за знайденим підрядком.
Де  є додатним цілим числом, меншим за 100, вставляє -й підрядок збігів у дужках, за умови, що першим аргументом був об’єкт . Зауважте, що вони індексуються з .

Використання функції в якості параметра

Ви можете вказати функцію в якості другого параметра. У цьому випадку функція буде викликана після знайдення збігу. Результат функції (повернене значення) буде використаний в якості рядка заміни. (Заувага: Вищезазначені спеціальні шаблони заміни не застосовуються у цьому випадку.)

Зауважте, що функція буде викликатись багаторазово, для кожного повного збігу, що буде замінений, якщо регулярний вираз у першому параметрі є глобальним.

Функція має наступні аргументи:

Можливе ім’я Надане значення
Знайдений підрядок. (Відповідає вищенаведеному )
n-й рядок, знайдений захопленою групою у дужках, за умови, що першим аргументом методу  був об’єкт . (Відповідає вищенаведеним , , і т.д.) Наприклад, якщо був наданий аргумент , то  є збігом з , а  — збігом з .
Зсув знайденого підрядка всередині рядка, що перевіряється. (Наприклад, якби цілим рядком був , а знайденим підрядком , то цей аргумент дорівнював би .)
Весь рядок, що перевіряється.

(Точна кількість аргументів залежить від того, чи є перший аргумент об’єктом — і, якщо є, то скільки збігів, заключених у дужки, він визначає.)

Наступний приклад присвоїть  значення :

function replacer(match, p1, p2, p3, offset, string) {
  // p1 - не цифри, p2 - цифри, а p3 - не літерно-цифрові символи
  return .join(' - ');
}
let newString = 'абв12345#$*%'.replace(/(*)(\d*)(*)/, replacer);
console.log(newString);  // абв - 12345 - #$*%

Создание регулярного выражения

Регулярное выражение можно создать двумя способами:

  • Используя литерал регулярного выражения, например:
    var re = /ab+c/;
    

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

  • Вызывая функцию конструктор объекта , например:
    var re = new RegExp("ab+c");
    

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

描述

该方法并不改变调用它的字符串本身,而只是返回一个新的替换后的字符串。

在进行全局的搜索替换时,正则表达式需包含 标志。

使用字符串作为参数

替换字符串可以插入下面的特殊变量名:

变量名 代表的值
插入一个 «$»。
插入匹配的子串。
插入当前匹配的子串左边的内容。
插入当前匹配的子串右边的内容。

假如第一个参数是 对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。提示:索引是从1开始

指定一个函数作为参数

你可以指定一个函数作为第二个参数。在这种情况下,当匹配执行后,该函数就会执行。 函数的返回值作为替换字符串。 (注意:上面提到的特殊替换参数在这里不能被使用。) 另外要注意的是,如果第一个参数是正则表达式,并且其为全局匹配模式,那么这个方法将被多次调用,每次匹配都会被调用。

下面是该函数的参数:

变量名 代表的值
匹配的子串。(对应于上述的$&。)

假如replace()方法的第一个参数是一个 对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)例如,如果是用 这个来匹配, 就是匹配的 , 就是匹配的 。

匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 ,匹配到的子字符串是 ,那么这个参数将会是 1)

被匹配的原字符串。
NamedCaptureGroup 命名捕获组匹配的对象

(精确的参数个数依赖于 的第一个参数是否是一个正则表达式()对象,以及这个正则表达式中指定了多少个括号子串,如果这个正则表达式里使用了命名捕获, 还会添加一个命名捕获的对象)

下面的例子将会使 变成 :

function replacer(match, p1, p2, p3, offset, string) {
  // p1 is nondigits, p2 digits, and p3 non-alphanumerics
  return .join(' - ');
}
var newString = 'abc12345#$*%'.replace(/(*)(\d*)(*)/, replacer);
console.log(newString);  // abc - 12345 - #$*%

浏览器兼容性

The compatibility table in this page is generated from structured data. If you’d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
Chrome Full support 1 Edge Full support 12 Firefox Full support 1 IE Full support 4 Opera Full support 4 Safari Full support 1 WebView Android Full support 1 Chrome Android Full support 18 Firefox Android Full support 4 Opera Android Full support 10.1 Safari iOS Full support 1 Samsung Internet Android Full support 1.0 nodejs Full support 0.1.100

Firefox 备注

  • 是一个仅在 Gecko 中可用的非标准的第三方参数:
  • 从 Gecko 27 (Firefox 27 / Thunderbird 27 / SeaMonkey 2.24) 开始,这个方法就被整合到了ECMAScript规范中。当 replace() 被使用全局 g 标志的正则表达式调用时, 属性将被重置为 0(bug 501739)。
  • 从 Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36) 开始, 参数便被弃用,且在调用时会抛出一个控制台警告(bug 1142351)。
  • 从 Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44) 开始,在非发行版本中已不再支持非标准的 参数,并且不久后会完全移除该参数(bug 1245801)。
  • 从 Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46) 开始,不再支持非标准的 参数(bug 1108382)。

ПримечанияRemarks

Параметры для Лукат, сеарчордер, _MatchCase_и матчбите сохраняются каждый раз при использовании этого метода.The settings for LookAt, SearchOrder, MatchCase, and MatchByte are saved each time you use this method. Если вы не укажете значения этих аргументов при следующем вызове метода, будут использоваться сохраненные значения.If you don’t specify values for these arguments the next time you call the method, the saved values are used. Установка этих аргументов изменяет параметры в диалоговом окне Найти, а изменение параметров в диалоговом окне Найти приводит к изменению сохраненных значений, которые используются, если опустить аргументы.Setting these arguments changes the settings in the Find dialog box, and changing the settings in the Find dialog box changes the saved values that are used if you omit the arguments. Чтобы избежать проблем, задайте эти аргументы явным образом при каждом использовании этого метода.To avoid problems, set these arguments explicitly each time that you use this method.

Приклади

Визначення регулярного виразу у replace()

У наступному прикладі регулярний вираз визначається у методі  та містить прапор ігнорування регістру.

let str = 'Наближається Різдво у чарівній Миші...';
let newstr = str.replace(/миші/i, 'тиші');
console.log(newstr);  // Наближається Різдво у чарівній тиші...

Цей код виводить .

Заувага: Більше пояснень щодо регулярних виразів дивіться у цьому посібнику.

Використання глобального пошуку та ігнорування регістру з replace()

Глобальну заміну можна зробити лише з використанням регулярного виразу. У наступному прикладі регулярний вираз містить , які дозволяють методу замінити кожний знайдений підрядок на .

let re = /яблука/gi;
let str = 'Яблука круглі, і яблука сочні.';
let newstr = str.replace(re, 'апельсини');
console.log(newstr);  // апельсини круглі, і апельсини сочні.

Цей код виводить .

Код, що міняє слова місцями

let re = /(\w+)\s(\w+)/;
let str = 'John Smith';
let newstr = str.replace(re, '$2, $1');
console.log(newstr);  // Smith, John

Цей код виводить .

Використання внутрішньої функції, яка модифікує знайдені символи

У цьому прикладі усі великі літери перетворюються на малі, а перед розташуванням збігу вставляється дефіс. Важливим тут є те, що необхідно виконати додаткові операції над збігом перед тим, як він буде повернений в якості заміни.

Функція заміни приймає фрагмент збігу в якості параметра і використовує його для перетворення регістру та приєднання дефісу перед поверненням.

function styleHyphenFormat(propertyName) {
  function upperToHyphenLower(match, offset, string) {
    return (offset > 0 ? '-' : '') + match.toLowerCase();
  }
  return propertyName.replace(//g, upperToHyphenLower);
}

Наступний код  поверне .

Оскільки ми хочемо далі трансформувати результат збігу перед останочною заміною, нам потрібно використовувати функцію. Це запускає обчислення збігу пред викликом методу . Якби ми спробували зробити це, використовуючи збіг без функії, метод не мав би жодного ефекту.

let newString = propertyName.replace(//g, '-' + '$&'.toLowerCase());  // не спрацює

Все тому, що  спочатку був би обчислений як рядковий літерал (і в результаті повернув би той самий рядок ) перед використанням його символів в якості шаблону.

Заміна градусів Фаренгейта на еквівалент у градусах Цельсія

Наступний приклад замінює значення градусів за Фаренгейтом на його еквівалент у градусах Цельсія. Значення градусів Фаренгейта має бути числом, що закінчується літерою . Функція повертає число за Цельсієм, що закінчується літерою . Наприклад, якщо вхідне число дорівнює , функція повертає . Якщо число дорівнює , функція вертає .

Регулярний вираз  перевіряє будь-яке число, що закінчується літерою . Значення градусів Фаренгейта доступне функції через її другий параметр . Функція присвоює значення за Цельсієм, базуючись на градусах Фаренгейта, переданих у рядку до функції . Далі  повертає значення за Цельсієм. Ця функція схожа на прапор мови Perl .

function f2c(x) {
  function convert(str, p1, offset, s) {
    return ((p1 - 32) * 5/9) + 'C';
  }
  let s = String(x);
  let test = /(-?\d+(?:\.\d*)?)F\b/g;
  return s.replace(test, convert);
}

ПримерExample

В этом примере каждое вхождение тригонометрической функции SIN заменяется функцией COS.This example replaces every occurrence of the trigonometric function SIN with the function COS. Диапазон замены — это столбец A на листе Sheet1.The replacement range is column A on Sheet1.

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

示例

在 中使用正则表达式

在下面的例子中, 中使用了正则表达式及忽略大小写标示。

var str = 'Twas the night before Xmas...';
var newstr = str.replace(/xmas/i, 'Christmas');
console.log(newstr);  // Twas the night before Christmas...

在 中使用 和 选项


下面的例子中,正则表达式包含有全局替换(g)和忽略大小写(i)的选项,这使得replace方法用’oranges’替换掉了所有出现的»apples».

var re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");

// oranges are round, and oranges are juicy.
console.log(newstr);

交换字符串中的两个单词

下面的例子演示了如何交换一个字符串中两个单词的位置,这个脚本使用$1 和 $2 代替替换文本。

var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
// Smith, John
console.log(newstr);

使用行内函数来修改匹配到的字符。

在这个例子中,所有出现的大写字母转换为小写,并且在匹配位置前加一个连字符。重要的是,在返回一个替换了的字符串前,在匹配元素前进行添加操作是必要的。

在返回前,替换函数允许匹配片段作为参数,并且将它和连字符进行连接作为新的片段。

function styleHyphenFormat(propertyName) {
  function upperToHyphenLower(match) {
    return '-' + match.toLowerCase();
  }
  return propertyName.replace(//g, upperToHyphenLower);
}

运行 将返回 ‘border-top’。

因为我们想在最终的替换中进一步转变匹配结果,所以我们必须使用一个函数。这迫使我们在使用方法前进行评估。如果我们尝试不用一个函数进行匹配,那么使用 方法将不会有效。

var newString = propertyName.replace(//g, '-' + '$&'.toLowerCase());  // won't work

这是因为 会先被解析成字符串字面量(这会导致相同的’$&’)而不是当作一个模式。

将华氏温度转换为对等的摄氏温度

下面的例子演示如何将华氏温度转换为对等的摄氏温度。华氏温度用一个数字加一个»F»来表示,这个函数将返回一个数字加»C»来表示的摄氏温度。例如,如果输入是 212F,这个函数将返回 100C。如果输入的数字是 0F,这个方法将返回 «-17.77777777777778C»。

正则表达式test检查任何数字是否以 F 结尾。华氏温度通过第二个参数p1进入函数。这个函数基于华氏温度作为字符串传递给f2c函数设置成摄氏温度。然后f2c()返回摄氏温度。这个函数与Perl的 s///e 标志相似。

function f2c(x)
{
  function convert(str, p1, offset, s)
  {
    return ((p1-32) * 5/9) + "C";
  }
  var s = String(x);
  var test = /(\d+(?:\.\d*)?)F\b/g;
  return s.replace(test, convert);
}

使用行内函数和正则来避免循环

下例把某种模式的字符串转换为一个对象数组(其元素为对象)。

输入: 一个由 x,- 和 _ 组成的字符串。

x-x_

---x---x---x---

-xxx-xx-x-

_x_x___x___x___

输出:

一个数组对象。’x’ 产生一个 ‘on’ 状态,’-‘(连接符)产生一个 ‘off’ 状态,而 ‘_’ (下划线)表示 ‘on’ 状态的长度。

代码片段:

var str = 'x-x_';
var retArr = [];
str.replace(/(x_*)|(-)/g, function(match, p1, p2) {
  if (p1) { retArr.push({ on: true, length: p1.length }); }
  if (p2) { retArr.push({ on: false, length: 1 }); }
});

console.log(retArr);

该代码片段生成了一个数组,包含三个期望格式的对象,避免了使用 for 循环语句。

Сумісність з веб-переглядачами

The compatibility table in this page is generated from structured data. If you’d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
Chrome Full support 1 Edge Full support 12 Firefox Full support 1 IE Full support 4 Opera Full support 4 Safari Full support 1 WebView Android Full support 1 Chrome Android Full support 18 Firefox Android Full support 4 Opera Android Full support 10.1 Safari iOS Full support 1 Samsung Internet Android Full support 1.0 nodejs Full support 0.1.100

Примеры

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

Изменение порядка в Исходной Строке

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

// The name string contains multiple spaces and tabs,
// and may have multiple spaces between first and last names.
var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";

var output = ;

// Prepare two regular expression patterns and array storage.
// Split the string into array elements.

// pattern: possible white space then semicolon then possible white space
var pattern = /\s*;\s*/;

// Break the string into pieces separated by the pattern above and
// store the pieces in an array called nameList
var nameList = names.split(pattern);

// new pattern: one or more characters then spaces then characters.
// Use parentheses to "memorize" portions of the pattern.
// The memorized portions are referred to later.
pattern = /(\w+)\s+(\w+)/;

// New array for holding names being processed.
var bySurnameList = [];

// Display the name array and populate the new array
// with comma-separated names, last first.
//
// The replace method removes anything matching the pattern
// and replaces it with the memorized string—second memorized portion
// followed by comma space followed by first memorized portion.
//
// The variables $1 and $2 refer to the portions
// memorized while matching the pattern.

output.push("---------- After Split by Regular Expression");

var i, len;
for (i = 0, len = nameList.length; i < len; i++){
  output.push(nameList);
  bySurnameList = nameList.replace(pattern, "$2, $1");
}

// Display the new array.
output.push("---------- Names Reversed");
for (i = 0, len = bySurnameList.length; i < len; i++){
  output.push(bySurnameList);
}

// Sort by last name, then display the sorted array.
bySurnameList.sort();
output.push("---------- Sorted");
for (i = 0, len = bySurnameList.length; i < len; i++){
  output.push(bySurnameList);
}

output.push("---------- End");

console.log(output.join("\n"));

Использование спецсимволов для проверки входных данных

В след. примере, ожидается что пользователь введет телефонный номер и требуется проверить правильность символов набранных пользователем. Когда пользователь нажмет кнопку «Check», скрипт проверит правильность введеного номера. Если номер правильный (совпадает с символами определенными в регулярном выражении), то скрипт покажет сообщение благодарности для пользователя и подтвердит номер. Если нет, то скрипт проинформирует пользователя, что телефонный номер неправильный.

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

Регулярное выражение ищет сначала 0 или одну открывающую скобку , , затем 0 или одну закрывающую скобку , потом одно тире, слеш или точка и когда найдет это, запомнит символ, след. три цифры, followed by the remembered match of a dash, forward slash, or decimal point , followed by four digits .

Событие «Изменить» активируется, когда пользователь подтвердит ввод значения регулярного выражения, нажав клавишу «Enter». 

<!DOCTYPE html>
<html>  
  <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    <meta http-equiv="Content-Script-Type" content="text/javascript">  
    <script type="text/javascript">  
      var re = /\(?\d{3}\)?([-\/\.])\d{3}\1\d{4}/;  
      function testInfo(phoneInput){  
        var OK = re.exec(phoneInput.value);  
        if (!OK)  
          window.alert(RegExp.input + " isn't a phone number with area code!");  
        else
          window.alert("Thanks, your phone number is " + OK);  
      }  
    </script>  
  </head>  
  <body>  
    <p>Enter your phone number (with area code) and then click "Check".
        <br>The expected format is like ###-###-####.</p>
    <form action="#">  
      <input id="phone"><button onclick="testInfo(document.getElementById('phone'));">Check</button>
    </form>  
  </body>  
</html>
autoPreviousNext("JSGChapters");

С этим читают