2015-05-06 5 views
-1

Моя проблема заключается в том, что я хочу, чтобы заменить весь текст, который начинается с «$» суммы в «[доллар]»JQuery: Заменить весь текст из определенной строки

Ex. строка: "У меня есть $ 100 и у вас есть только $ 50"

Результат: "У меня есть [доллар] и у вас есть только [доллар]"

Другой Ex. : «$ СравниваемаяСтрока л $ тест anotherString тест»

Результат: «[доллар] л [доллар] тест тест»

Она затрагивает все строки из тела страницы. Благодаря!

+0

ли вам это нужно, чтобы быть более точным, чем показан Бел вл? т. е. соответствует только $, где он предшествует числу? –

+0

Не нужно число. Если текст, начинающийся с '$', замените его на что-то еще. см. Обновленный снова. Спасибо вам за помощь Aussie. – aldesabido

ответ

2

Используйте Regex с глобальным параметром (/g)

html = html.replace(/\$/g, "#"); 

Вы не говорите, где оно должно быть применено хотя.

например. на всю веб-страницу

var html = $('body').html();  
html = html.replace(/\$/g, "#"); 
$('body').html(html); 

e.g. для каждого DIV (используя параметр функции для html()):

$('div').html(function(i, v){ 
    return v.replace(/\$/g, "#"); 
}); 

например для каждого пункта (используя параметр функции для html()):

$('p').html(function(i, v){ 
    return v.replace(/\$/g, "#"); 
}); 

Update: Матч количество номеров тоже:

html = html.replace(/\$[0-9.]*/g, "#"); 

JSFiddle:http://jsfiddle.net/TrueBlueAussie/kveoxd2e/

Обновление: матч ничего до следующего пробел (например, слово):

html = html.replace(/\$\w*/g, "[dollar]"); 

JSFiddle:http://jsfiddle.net/kveoxd2e/2/

И если вы действительно хотите центов слишком ... Обновление: матч ничего включая центов

html = html.replace(/\$(\S)*/g, "[dollar]"); 

JSFiddle:http://jsfiddle.net/kveoxd2e/4/

+0

Извините, брат. мой предыдущий вопрос - это не то, что я хочу. Просьба проверить обновленный. – aldesabido

+0

См. Обновление в соответствии с номером. –

+0

@aldesabido: Добавлен JSFiddle для тестирования. –

1

от 0 до бесконечной вар STRINGVAR = «У меня есть 100 долларов, а у вас всего 50 долларов»; строкаVar.replace (/ \ $/g, "#");

EDIT:

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

stringVar.replace(/\$[0-9]*(\.)?[0-9]+/g, "[dollar]"); 

Это должно заменить любую сумму, даже с десятичными точками.

Вы можете прочитать RegEx как:

  • $: Символ "$"
  • [0-9] *: Любое число от 0 до бесконечности или нет символов на всех
  • (\ .): Может быть 0 или 1 "."
  • [0-9] +: Любое количество от 0 до бесконечности, но по крайней мере, одна цифре

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

stringVar.replace(/\$(\S)*/g, "#"); 
  • (\ S) *: Любой непробельный символ после "$"
+0

Жаль, братан. мой предыдущий вопрос - это не то, что я хочу. Просьба проверить обновленный. – aldesabido

Смежные вопросы