Вы можете сделать что-то вроде этого:
$("div:contains(single)").html(function(i,currentVal) {
return currentVal.replace(/single /,"")
.replace(/ (Tube|Bus|Ferry)/," single $1");
});
Демо: http://jsfiddle.net/nnnnnn/R3V63/
При этом используется селектор ":contains"
, чтобы найти все дивы, содержащие слово «single», а затем используется метод .html()
с синтаксисом обратного вызова, который позволяет индивиду значения обрабатываются по одному, когда переданной функции обратного вызова передается текущее html-содержимое каждого элемента, а возвращаемое значение становится новым содержимым.
Чтобы «переместить» слово «одиночный», я сначала заменяю его пустой строкой, а затем вставляю его непосредственно перед любым из слов «Tube», «Bus» или «Ferry». Очевидно, что если есть какие-то другие виды транспорта, которые необходимо включить, в регулярное выражение можно внести изменения. Попытка найти правильное место путем сопоставления в «Зонах 1, 2 и 3» казалась слишком сложной, учитывая возможные варианты, такие как «Зона 1», «Зоны 2 и 3» и т. Д.
См. Документ на .replace()
для получения дополнительной информации.
РЕДАКТИРОВАТЬ: альтернативное регулярное выражение для соответствия "Zones ..." (не так уж много хлопот в конце концов):
.replace(/(zones?(?:[\d, ]|and)+) /,"$1 single ");
(вроде нормально работает: http://jsfiddle.net/nnnnnn/R3V63/4/)