Манипулирование результатами Javascript RegExp как нестроковых - PullRequest
0 голосов
/ 01 февраля 2010

Гораздо проще показать код Javascript, чем предложить сложное объяснение:

var html = '<input tabindex="1" type="text">';<br /> html.replace(/tabindex="([0-9]+)"/g, 'tabindex="' + ("$1" * i) + '"');

В этом коде «$ 1» всегда будет строкой, то есть этот RegExp всегда будет приводить к «tabindex =« NaN »» ... Использование parseInt не работает.

Можно ли привести ответ от RegExp в виде целого числа, чтобы я мог выполнить математику при замене?

1 Ответ

4 голосов
/ 01 февраля 2010

Аргумент замены может быть функцией :

html.replace(/tabindex="([0-9]+)"/g, function (all, tabindex) {
        return 'tabindex="' + (tabindex * i) + '"'
    });

Однако вы должны использовать регулярные выражения только для манипулирования HTML, если у вас нет парсера. Если этот код запускается в браузере, то у вас есть парсер. Если узел исходит из другого документа, используйте document.importNode. Если узел находится в том же документе, используйте Node.cloneNode. Оба поддерживают глубокое копирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...