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 14:04

Не n-е совпадение шаблона, а n-я скобка!
Метод должен работать и без флага g

рони 24.05.2019 14:19

Rust
плохо представляю что вам нужно.

Rust 24.05.2019 14:55

Цитата:

Сообщение от рони (Сообщение 508213)
плохо представляю что вам нужно.

Мне нужна функция от двух параметров - строка и регулярное выражение.
Регулярное выражение может содержать некоторое количество круглых скобок, обозначающих атомы регулярного выражения. В том числе и вложенные друг в друга!

Функция должна найденные атомы регулярного выражения обрамлять указанными символами.

рони 24.05.2019 15:18

Rust,
может кто-то другой сможет вам помочь, для меня, вашего описания по прежнему недостаточно.

Rust 24.05.2019 15:29

Может быть проблема в терминологии? Атом == группа вот в этом смысле

Alexandroppolus 24.05.2019 15:53

Rust,
Регулярка вообще любая?

Может ли там быть, например, вот такая хрень: (\d)+
т.е. то что в скобках повторяется несколько раз и надо каждое повторение отдельно обработать? И может ли быть такое для вложенных скобок? Типа (...(\d)+...)*

Сколько может быть скобок в регулярке?

Это должно быть кроссбраузерно, или код только для Хрома и node.js?


Я, кажется, понял, что надо, но задача крепкая, если в совсем общем виде.

рони 24.05.2019 15:56

Цитата:

Сообщение от Rust
Функция должна найденные атомы регулярного выражения обрамлять указанными символами.

Цитата:

$n или $nn, где n/nn - десятичные цифры
Вставляет n-ю скобку в совпадении,
что мешает написать нужный шаблон замены?

Alexandroppolus 24.05.2019 16:00

Цитата:

Сообщение от рони
что мешает написать нужный шаблон замены?

Автору нужен код, который этот шаблон автоматически сгенерирует. Но просто шаблоном тут не всегда можно будет обойтись.

рони 24.05.2019 16:04

Цитата:

Сообщение от Alexandroppolus
который этот шаблон автоматически сгенерирует.

чтобы это значило? подожду решения.

рони 24.05.2019 16:06

:) пока так вариант с неавтоматическим шаблоном...

var str = "Ну что сказать? -12.85 - это отрицательное число, а 0.86 - положительное";
function r(v,s) {
  return v.replace(s, function(...f) {
     return  `${f[1]}<span class=P1>${f[2]}</span><span class=P2>${f[3]}</span>`
  });
}
str = r(str, /([^-\d.])(\d+)(\.\d+)?/g);
alert(str);


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