Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена в регулярном выражении подстрок (https://javascript.ru/forum/misc/77590-zamena-v-regulyarnom-vyrazhenii-podstrok.html)

Rust 24.05.2019 11:06

Замена в регулярном выражении подстрок
 
Подскажите - как решаются подобные классы задач:
С помощью регулярного выражения в совпадающем фрагменте найти и заменить текст, соответствующий n-ной скобке.

Например:
в строке
"1285423808063"

в соответствии с регулярным выражением
/[^3](8)(0)[6-8]/

заменить 8 на *
и 0 на +
чтобы получилось
"128542380*+63"

рони 24.05.2019 12:41

Rust,
var str = "1285423808063";
str = str.replace(/(380)(\d{2})/, "$1*+");
alert(str);

Rust 24.05.2019 12:46

Нужно общее решение. С частными всё понятно

рони 24.05.2019 12:47

Цитата:

Сообщение от Rust
Нужно общее решение.

уточните вопрос?

Rust 24.05.2019 12:55

Для понимания, нужно дописать
function(v,s) {
  return v.replace(s, function(f) {
    ...
  });
}
так, чтобы при любой строке v и любом регулярном выражении s текст, соответствующий n-ной скобке обрамлялся тегами:
<span class=Pn>$n</span>

рони 24.05.2019 13:00

Цитата:

Сообщение от Rust
Для пониман

не понимаю, можно примеры, строка на входе и строка на выходе.

рони 24.05.2019 13:07

Rust,
возможно вы хотели так
var str = "1285423808063";
function r(v,s,n) {
  return v.replace(s, function(f) {
     return --n ? f : '"'+f+'"'
  });
}
str = r(str, /\d{2}/g,3);
alert(str);

Rust 24.05.2019 13:27

строка:
Ну что сказать? -12.85 - это отрицательное число, а 0.86 - положительное

регулярное выражение:
/[^-\d.](\d+)(\.\d+)?/g


Результат:
Ну что сказать? -12.85 - это отрицательное число, а <span class=P1>0</span><span class=P2>.86</span> - положительное

Rust 24.05.2019 13:29

Повторяю. Строка и регулярка могут быть любой.
Обработку пишу я. Мне нужен общий метод.

рони 24.05.2019 13:42

Цитата:

Сообщение от Rust
Мне нужен общий метод.

пост #7


Часовой пояс GMT +3, время: 02:25.