操作Javascript RegExp结果为非字符串

时间:2010-02-01 07:31:45

标签: javascript regex

显示Javascript代码要比提供复杂的解释容易得多:

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

在此代码中,“$ 1”将始终为字符串,这意味着此RegExp将始终导致'tabindex =“NaN”'...使用parseInt不起作用。

是否可以将RegExp的响应转换为整数,以便我可以对替换执行数学处理?

1 个答案:

答案 0 :(得分:4)

替换参数can be a function

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

但是,如果您没有解析器,则应该只使用regexp来操作HTML。如果要在浏览器中运行此代码,那么您将拥有一个解析器。如果节点来自其他文档,请使用document.importNode。如果节点位于同一文档中,请使用Node.cloneNode。两者都支持深度复制。