Это не работает, и мне это нужно плохо
он всегда заменяет только для первого экземпляра, но мне нужно, чтобы он работал для всех символов +.
Вам нужно использовать регулярное выражение, чтобы вы могли указать глобальный (g) флаг:
(я удалил $() вокруг строки, так как replace не является методом jQuery, поэтому он не будет работать вообще.)
RegEx — это способ пойти в большинстве случаев.
В некоторых случаях может быть быстрее указать больше элементов или конкретного элемента для выполнения замены:
Это заменяет один раз на каждую строку, но делает это с использованием более конкретного селектора.
Посмотрите другие вопросы по меткам jquery string replace или Задайте вопрос
- Синтаксис
- Аргументы
- Описание, примеры
- Строка замены
- Функция замены
- Вопрос на счёт >:
- 2 ответа
Синтаксис
Аргументы
Описание, примеры
Этот метод не меняет вызывающую строку, а возвращает новую, после замен.
Чтобы произвести глобальный поиск и замену, используйте regexp c флагом «g».
Строка замены
Если вы указываете строку как второй параметр — она может включать в себя следующие специальные сочетания:
$$ Вставляет «$» $& Вставляет совпавшую подстроку $` Вставляет часть строки, которая предшествует совпавшей подстроке $’ Вставляет часть строки, которая следует за совпавшей подстрокой $n или $nn, где n/nn — десятичные цифры Вставляет n-ю скобку в совпадении, если первый аргумент — объект RegExp
Функция замены
Если вы указываете функцию в качестве второго параметра, то она вызывается при каждом совпадении.
Ваша функция может динамически генерировать строку, которая заменит совпавшую подстроку. В качестве значения для замены используется результат работы функции.
Функция может использовать совпавшие подстроки — она их получает в параметрах вызова. Первый параметр всегда содержит полную совпавшую подстроку.
Если при вызове replace указано регулярное выражение, а не строка, то последующие параметры будут содержать значения скобочных групп.
Наконец, последние два параметра — позиция, на которой произошло совпадения и вызывающая строка.
Следующий пример вернет my XX, zz .
Значения параметров при вызове replacer :
str «XXzz» — совпавшая подстрока p1 «XX» — первая скобка p2 «zz» — вторая скобка offset 3 — позиция в тексте для поиска s «my XXzz» — вызывающая строка, т.е строка для поиска
В следующем примере используется строка замены. Глобального поиска при этом не происходит.
Для глобального поиска используйте регулярное выражение.
Следующий пример использует при замене сочетания $1 и $2 для ссылок на результат поиска.
Спасибо! И все же жаль, что нет замены без регулярных выражений.
Спасиб ОГРОМНОЕ. Я долго думал,почему replace заменял не все строки,но когда поставил с new RegExp(«тест»,’g’) всё пофурчало. СПС.
Опечатка:
. Чтобы произвести глобальныЙ поиск.
Для глобальной замены лучше подходит str.split(search).join(replace); и работает быстрее, и беспокоиться о спецсимволах почти не надо.
Спасибо! Долго не мог решить вопрос с вырезанием спец символов.
Метод split вызовет ошибку, если подстрока search не будет найдена в строке str. Т.О. сий подход не универсален. Следует это помнить!
И еще не очень удобно, потому что реальная строка будет заменена, а если это шаблонная строка? Например, ест апельсины?
Спасибо и низкий поклон тебе.
Класс! Вот это то что долго искал! Я зае. с этими регулярками. Спасибо!
подскажите как можно стереть все лучше вообще все спец символы. может есть какой-то аналог addslashes или mysql_real_escape_string
А как найти в строке, скажем, 20-й символ (причем без разницы, что за символ там будет стоять) и заменить его например на «А» ?
str = ‘bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb’.split(«»);
str[19] = ‘A’;
str = str.join(«»);
alert(str);
Автору спасибо за статью .
Спасибо большое! Но я не понял, как работает str.replace(anything, function);
А изза чего может быть проблема при глобальной замене, когда не заменяются символы []
Возможно нужно экранировать символы «[» и «]» обратным слэшем.
подскажите как сделать так штоб через replace оствлось только:Сайт для любителей домашних животных и не только. Новости из мира животных
подскажите как сделать так штоб через replace оствлось только:Сайт для любителей домашних животных и не только. Новости из мира животных
meta style=»border-color: rgb(0, 0, 255); border-w
Ребята, подскажите плз как удалить из строки подстроку, которая начинается с символов «>>» и заканчивается » или заменить на «». Пока делаю тупо так:
—
В пиве сила! В вине мудрость! А в воде. микробы!
Спасибо Вам большое,пролили свет в мою темную утомительную ночь
спасибо за объяснение роли флага /../g
и да прибудет с вами
Ребят а не подскажите возможно ли:
В базе есть построчный текст. При выводе через replace на конце строки ставится . Возможно как-то ли вместо на конце заключать строку в теги
Блин сорри все теги порезались.
В базе mysql в ячейке есть построчный текст. При выводе через replace на конце строки ставится тег BR. Возможно как-то ли вместо BR на конце заключать каждую строку в тег P
А можно ли заменить текст на пустой символ? Чтобы ничего не было?
Забавное поведение функции:
Привет, спасибо за статью. Есть такая проблема:
Непонятно, почему так работает.
Надо так писать:
я так понял replace работает 1 раз?
т.к. выполняю след.
link = link.replace(/ /g, ‘-‘);
заменяю пробелы на дефис
далее мне нужно заменить в этом же $str все лишние символы слеши скобки и т.д.
ничего не выходит, выручайте!
возможно как-то так:
или если надо убрать все символы не буквы и не цифры и заменить на дефисы, то так:
Спасибо за эту подсказку. Она мне помогла.
А может ли эта функция заменять в тексте разные фрагменты на разные выражения, например «Курица» заменить на «яйцо» и параллельно «волк» заменить на «ягнёнок» ?
ничего не понял, но все равно спс)
автор написал так,что понять может только тот, кто не знал какого-то отдельного момента.
именно поэтому на рынке у нас учебники из США, что авторы просто тупо ленятся объяснить четко и подробно
Вопрос на счёт >:
Кто нибудь пояснить может, что эта функция возращает при, так сказать, false. То есть, если искомая строка не найдена: Стандартно: «-1» или булевское значение?
Добавлю и я свой «костыль» по глобальной замене строк. Моя функция производит глобальную замену, в качестве параметров поиска и замены передаются как строки, так и массивы: srch[0] -> repl[0], srch[1] -> repl[1], . или srch[0] -> rep, srch[1] -> rep, . В последних двух параметрах можно указать, что вставить перед и после заменяемого фрагмента.
Кстати, в примере использования строки 3-4 можно записать еще так:
Привет всем. Подскажите как можно осуществить такую штуку. Нужно, что бы при входе пользователя после ввода его пароль заменялся автоматически на другой.
Здравствуйте! Помогите пожалуйста со скриптом. Есть сайт с музыкой, все названия песен в одну строку. При переносе через код удаляются начальные ковычки и скобки. Ничего придумать больше т.к. не знаю js. Для наглядного примера ссылочка
//может вот так
for (var i = 0; i ‘);
$(«.titlid»).eq(i).html(textid2[0] + ‘ — ‘ + textid2[1]);
>
возможно из одной строки убирать части которые переданы в другую переменную
var namb=3456284563991
var cl=345
var li2=3991
var cena2pl=namb.replace(/cl/g, «»);
alert(cena2pl);
var namb2=cena2pl.replace(/li2/g, «»);
alert(namb2); нужен результат 628456
теперь я не умру с голоду
Здравствуйте.
Подскажите, как при помощи replace (или др) в строке «asdfg 123 mn=bv 587» удалить строку «mn=» и еще 2 символа после нее, т.е. как удалить «mn=bv», но «bv» — неизвестна?
var str = «asdfg 123 mn=bv 587»
alert(str.replace(/mn=./, »)) // если известно, что ровно 2 ЛЮБЫХ символа (буквы, цифры и т.д)
alert(str.replace(/mn=.+s/, ‘ ‘)) // аналогично, но предполагая, что bv произвольной длины, не содержит пробела и следом есть пробел
Всем привет!
Такой вопрос.
Есть допустим текст: «г. Москва, ул. Ленина 5»
Как в этом тексте сделать замену на: «г.
Но! С одним условием — поиск по тексту, мы производим словом «москва», т.е. москва — с маленькой буквой, а на выходе текст должен остаться оригинальным, но со вставкой тегов
Извините, но написано так, что нуля понять, что она вообще делает и каким образом, мягко говоря, затруднительно.
Ребят, а как тут поступить?
Вот эту строку: 88002004860
нужно привести к такому виду: 8 800 200 48 60
У меня есть следующий код
этот фрагмент кода записывается для удаления всего двоеточия в строке, которая читается следующим образом:
00: 04: F2: 1C: AC: 27
Однако, похоже, он не работает.. пожалуйста, помогите!
2 ответа
4 Решение adeneo [2012-08-24 10:08:00]
Вероятно, для их устранения необходимо, чтобы все они были глобальными:
И поскольку это регулярное выражение, оно должно быть некотируемым.
Что означает $j ? У вас есть вызов как $j=jQuery.noConflict() раньше? В противном случае он должен читаться так:
И вы не ставите регулярное выражение в кавычки, просто косые черты
И, конечно, как писал аданео. Вам нужен модификатор g. Без вас просто замените один вид
Источник: