RegExp функция замены
есть поле, в нем содержатся строки такого плана:
" - (1) Главная - (1) Не главная " мне нужно, при совпадении названия строки (Главная, Не главная), увеличить счетчик в скобочках на один, т.е. регуляркой заменить единичку на двоечку и т.д. Нужно использовать функцию замены, но на своем примере я уже всю голову поломал ( |
/\d*/
|
Цитата:
|
Это можно сделать, но это будет решение не просто через ж, это решение через ж соседа сверху.
|
Цитата:
Код:
/[0-9]*/ |
DreamTheater,
Вы вопрос прочитали вообще?) |
Можно сделать так:
var string = Array(4).join("- (1) Главная\n"), count = 0; alert("Исходный вариант:\n" + string); alert("После replace:\n" + *!* string.replace(/(- \().*(\) Главная)/g, function(str, part1, part2){ return part1 + ++count + part2; }) */!* );Регуляка состоит из двух запомянающих скобок и того, что между ними нужно заменить. Соответственно, заменяем на первая скобка + счетчик + вторая скобка. |
...
|
Sweet,
1?<textarea rows="7" cols="40" onclick="value = value.replace( /\d+(?=\) Не главная)/g , function(a){return ++a}) "> click - (1) Главная - (1) Не главная - (1) Главная - (1) Не главная - (1) Главная </textarea> 2?<textarea rows="7" cols="40" onclick="i=0; value = value.replace( /\d+(?=\) Главная)/g ,function(){return ++i}) "> click - (1) Главная - (1) Не главная - (1) Главная - (1) Не главная - (1) Главная </textarea> И всё равно это удаление гланд через жопу. |
Sweet, Aetae пасиба!
вроде, и не совсем через жопу... максимум, через ноздри =). "Главная","Не главная" в моем случае - переменные, а дефис перед строкой статичен, так что, пойдет... Запилил первый пример под то, что мне нужно... чтобы не от переменной увеличивалось, а от числа в скобках var string = Array(4).join("- (1) Главная\n"), count = 0; alert("Исходный вариант:\n" + string); alert("После replace:\n" + string.replace(/(- \()(.*)(\) Главная)/g, function(str, part1, part2,part3){ part4=parseInt(part2)+1; return part1 + part4 +part3; }) ); |
Часовой пояс GMT +3, время: 21:52. |