Этот метод не меняет вызывающую строку, а возвращает новую, после замен.
Чтобы произвести глобальный поиск и замену, используйте regexp c флагом "g".
Строка замены
Если вы указываете строку как второй параметр - она может включать в себя следующие специальные сочетания:
- $$
- Вставляет "$"
- $&
- Вставляет совпавшую подстроку
- $`
- Вставляет часть строки, которая предшествует совпавшей подстроке
- $'
- Вставляет часть строки, которая следует за совпавшей подстрокой
- $n или $nn, где
n/nn - десятичные цифры
- Вставляет n-ю скобку в совпадении, если первый аргумент - объект
RegExp
Функция замены
Если вы указываете функцию в качестве второго параметра, то она вызывается при каждом совпадении.
Ваша функция может динамически генерировать строку, которая заменит совпавшую подстроку. В качестве значения для замены используется результат работы функции.
Функция может использовать совпавшие подстроки - она их получает в параметрах вызова. Первый параметр всегда содержит полную совпавшую подстроку.
Если при вызове replace указано регулярное выражение, а не строка, то последующие параметры будут содержать значения скобочных групп.
Наконец, последние два параметра - позиция, на которой произошло совпадения и вызывающая строка.
Следующий пример вернет my XX, zz.
function replacer(str, p1, p2, offset, s) {
return p1 + ", " + p2;
}
newString = "my XXzz".replace(/(X+)(z+)/, replacer)
Значения параметров при вызове replacer:
- str
"XXzz" - совпавшая подстрока
- p1
"XX" - первая скобка
- p2
"zz" - вторая скобка
- offset
3 - позиция в тексте для поиска
- s
"my XXzz" - вызывающая строка, т.е строка для поиска
В следующем примере используется строка замены. Глобального поиска при этом не происходит.
Пример: строка замены
str = "тест еще тест"
str.replace("тест","прошел") // = "прошел еще тест"
Для глобального поиска используйте регулярное выражение.
Пример: Глобальная замена строки
str = "тест еще тест"
str.replace(/тест/g,"прошел") // = "прошел еще прошел"
// или так
str.replace(new RegExp("тест",'g'),"прошел")
Следующий пример использует при замене сочетания $1 и $2 для ссылок на результат поиска.
Пример: Замена со ссылками
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1") // "Smith, John"
Автор: ИнфоМастер (не зарегистрирован), дата: 19 декабря, 2009 - 22:54
#permalinkСпасибо! И все же жаль, что нет замены без регулярных выражений...
Автор: miXOnIN (не зарегистрирован), дата: 27 декабря, 2009 - 14:26
#permalinkСпасиб ОГРОМНОЕ!!! Я долго думал,почему replace заменял не все строки,но когда поставил с new RegExp("тест",'g') всё пофурчало!!! СПС!!!
Автор: IrviS (не зарегистрирован), дата: 7 апреля, 2010 - 18:36
#permalinkОпечатка:
...Чтобы произвести глобальныЙ поиск...
Автор: Alinaki (не зарегистрирован), дата: 21 октября, 2011 - 11:11
#permalinkДля глобальной замены лучше подходит str.split(search).join(replace); и работает быстрее, и беспокоиться о спецсимволах почти не надо.
Автор: Михайло (не зарегистрирован), дата: 27 ноября, 2011 - 18:12
#permalinkподскажите как можно стереть все \ \; лучше вообще все спец символы. может есть какой-то аналог addslashes или mysql_real_escape_string
Автор: Мотя (не зарегистрирован), дата: 25 января, 2012 - 11:05
#permalinkА как найти в строке, скажем, 20-й символ (причем без разницы, что за символ там будет стоять) и заменить его например на "А" ?
Автор: компьютерная барахолка (не зарегистрирован), дата: 9 мая, 2012 - 12:33
#permalinkАвтору спасибо за статью !!!
Автор: Questioner, дата: 25 мая, 2012 - 21:24
#permalinkСпасибо большое! Но я не понял, как работает str.replace(anything, function);
Автор: brussens, дата: 28 июня, 2012 - 23:03
#permalinkА изза чего может быть проблема при глобальной замене, когда не заменяются символы []
Автор: Гость (не зарегистрирован), дата: 14 ноября, 2012 - 14:09
#permalinkподскажите как сделать так штоб через replace оствлось только:Сайт для любителей домашних животных и не только. Новости из мира животных
Спосибо заимно
Автор: Гость (не зарегистрирован), дата: 14 ноября, 2012 - 14:14
#permalinkподскажите как сделать так штоб через replace оствлось только:Сайт для любителей домашних животных и не только. Новости из мира животных
meta style="border-color: rgb(0, 0, 255); border-width: 2px; border-style: solid;" name="description" content="Сайт для любителей домашних животных и не только. Новости из мира животных"
Спосибо заимно
Автор: zjiodeu, дата: 24 января, 2013 - 13:49
#permalinkРебята, подскажите плз как удалить из строки подстроку, которая начинается с символов ">>" и заканчивается "<<"?
Автор: vitalkad (не зарегистрирован), дата: 23 марта, 2013 - 16:59
#permalinkТо, что надо! Очень понятно!
Автор: Kvark, дата: 12 апреля, 2013 - 14:17
#permalinkникак не пойму как через репласе заменить два тега одним проходом? в том смысле если встретиться < p > или < /p > заменить на "". Пока делаю тупо так:
strMsg.replace("<p>", '').replace("</p>", '')--
В пиве сила! В вине мудрость! А в воде... микробы!
Автор: Прохожий (не зарегистрирован), дата: 29 апреля, 2013 - 23:01
#permalinkСпасибо Вам большое,пролили свет в мою темную утомительную ночь
Автор: иван из города (не зарегистрирован), дата: 8 июля, 2013 - 01:39
#permalinkспасибо за объяснение роли флага /../g
и да прибудет с вами
!
Автор: DRu999 (не зарегистрирован), дата: 21 июля, 2013 - 09:09
#permalinkРебят а не подскажите возможно ли:
В базе есть построчный текст. При выводе через replace на конце строки ставится . Возможно как-то ли вместо на конце заключать строку в теги
?
Автор: DRu999 (не зарегистрирован), дата: 21 июля, 2013 - 09:11
#permalinkБлин сорри все теги порезались.
В базе mysql в ячейке есть построчный текст. При выводе через replace на конце строки ставится тег BR. Возможно как-то ли вместо BR на конце заключать каждую строку в тег P
Автор: mobipak (не зарегистрирован), дата: 14 сентября, 2013 - 07:51
#permalinkА можно ли заменить текст на пустой символ? Чтобы ничего не было?
Автор: NikolasSumrak (не зарегистрирован), дата: 25 октября, 2013 - 20:08
#permalinkЗабавное поведение функции:
var string = "1"; string.replace("", "sad"); alert(string); // sad1 -Автор: Гость (не зарегистрирован), дата: 15 января, 2014 - 14:06
#permalinkПривет, спасибо за статью. Есть такая проблема:
Непонятно, почему так работает...
Автор: 1 день в js (не зарегистрирован), дата: 6 февраля, 2014 - 09:17
#permalinkя так понял replace работает 1 раз?
т.к. выполняю след.
link = link.replace(/\ /g, '-');
заменяю пробелы на дефис
далее мне нужно заменить в этом же $str все лишние символы слеши скобки и т.д.
ничего не выходит, выручайте!
Автор: Дмитрий (Radiotehnic) (не зарегистрирован), дата: 31 мая, 2014 - 00:01
#permalinkА может ли эта функция заменять в тексте разные фрагменты на разные выражения, например "Курица" заменить на "яйцо" и параллельно "волк" заменить на "ягнёнок" ?
Автор: 1477 (не зарегистрирован), дата: 4 февраля, 2015 - 17:05
#permalinkничего не понял, но все равно спс)
автор написал так,что понять может только тот, кто не знал какого-то отдельного момента...
именно поэтому на рынке у нас учебники из США, что авторы просто тупо ленятся объяснить четко и подробно
Автор: Karodar (не зарегистрирован), дата: 11 марта, 2015 - 12:22
#permalinkВопрос на счёт <<Возращаемого значения>>:
Кто нибудь пояснить может, что эта функция возращает при, так сказать, false. То есть, если искомая строка не найдена: Стандартно: "-1" или булевское значение?
Автор: acso (не зарегистрирован), дата: 27 марта, 2015 - 11:02
#permalinkДобавлю и я свой "костыль" по глобальной замене строк. Моя функция производит глобальную замену, в качестве параметров поиска и замены передаются как строки, так и массивы: srch[0] -> repl[0], srch[1] -> repl[1], ... или srch[0] -> rep, srch[1] -> rep, ... В последних двух параметрах можно указать, что вставить перед и после заменяемого фрагмента.
function strr(txt, search, replace, insbefore, insafter) { if (!(search && replace)) return txt; var i, txt1, sitem, ritem; if (!insbefore) insbefore = ''; if (!insafter) insafter = ''; // приводим параметры поиска и замены к массивам if ((typeof search) != 'object') search = [search]; if ((typeof replace) != 'object') replace = [replace]; // длина массива замены должна быть не меньше длины массива поиска if (replace.length < search.length) { ritem = replace[replace.length - 1]; for (i = replace.length; i < search.length; i++) { replace.push(ritem); } } // ищем и заменяем for (i = 0; i < search.length; i++) { sitem = search[i]; ritem = insbefore + replace[i] + insafter; txt1 = ''; while (txt1 != txt) { txt1 = txt; txt = txt1.replace(sitem, ritem); } } return txt; }Использование:
Автор: acso (не зарегистрирован), дата: 27 марта, 2015 - 11:22
#permalinkКстати, в примере использования строки 3-4 можно записать еще так:
Автор: Мотя (не зарегистрирован), дата: 8 апреля, 2015 - 09:13
#permalinkПривет всем. Подскажите как можно осуществить такую штуку. Нужно, что бы при входе пользователя после ввода его пароль заменялся автоматически на другой.
Автор: Гость (не зарегистрирован), дата: 8 января, 2016 - 01:11
#permalinkЗдравствуйте! Помогите пожалуйста со скриптом. Есть сайт с музыкой, все названия песен в одну строку. При переносе через код удаляются начальные ковычки и скобки. Ничего придумать больше т.к. не знаю js. Для наглядного примера ссылочка
https://jsfiddle.net/vyr7aq1f/1/
Спасибо.
Автор: Гость (не зарегистрирован), дата: 5 февраля, 2017 - 22:33
#permalinkвозможно из одной строки убирать части которые переданы в другую переменную
var namb=3456284563991
var cl=345
var li2=3991
alert(namb);
var cena2pl=namb.replace(/\cl/g, "");
alert(cena2pl);
var namb2=cena2pl.replace(/\li2/g, "");
alert(namb2); \\\нужен результат 628456
Автор: Гость (не зарегистрирован), дата: 12 августа, 2017 - 12:39
#permalinkтеперь я не умру с голоду
Автор: Гость (не зарегистрирован), дата: 4 января, 2018 - 14:42
#permalinkЗдравствуйте.
Подскажите, как при помощи replace (или др) в строке "asdfg 123 mn=bv 587" удалить строку "mn=" и еще 2 символа после нее, т.е. как удалить "mn=bv", но "bv" - неизвестна?
Автор: Гость (не зарегистрирован), дата: 8 марта, 2019 - 07:19
#permalinkВсем привет!
Такой вопрос.
Есть допустим текст: "г. Москва, ул. Ленина 5"
Как в этом тексте сделать замену на: "г.
Москва
, ул. Ленина 5"
Но! С одним условием - поиск по тексту, мы производим словом "москва", т.е. москва - с маленькой буквой, а на выходе текст должен остаться оригинальным, но со вставкой тегов
Автор: Alexey Lisovy (не зарегистрирован), дата: 27 июня, 2019 - 16:26
#permalinkИзвините, но написано так, что нуля понять, что она вообще делает и каким образом, мягко говоря, затруднительно.
Автор: Bryliano (не зарегистрирован), дата: 29 июня, 2019 - 18:04
#permalinkРебят, а как тут поступить?
Вот эту строку: 88002004860
нужно привести к такому виду: 8 800 200 48 60
Автор: Ромео (не зарегистрирован), дата: 15 августа, 2020 - 20:25
#permalinkПочему
str.replace("/\"/g","") не работает?
Хочу удалить все двойные кавычки в строке.
Автор: Гость (не зарегистрирован), дата: 13 января, 2021 - 18:51
#permalinkБольшое спасибо за статью!!!♥
Автор: Гость (не зарегистрирован), дата: 5 июня, 2021 - 13:41
#permalinkПодскажите как удалить весь закоментированный текст через JS
В php такой "html.replace(//g, '');" метод работает, а в JS нифига не удаляет!?
Автор: StasV (не зарегистрирован), дата: 8 июня, 2021 - 14:36
#permalinkА где можно почитать подробнее о синтаксисе всех этих слешей, вопросов и тд? Как я понимаю, он используется не только в replace