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, время: 16:57. |