Javascript 在执行正则表达式搜索时操纵输入字符串

Javascript 在执行正则表达式搜索时操纵输入字符串,javascript,regex,Javascript,Regex,尝试查找字符串中的每个匹配项,并使用自定义函数处理它,然后在字符串中替换它。但是,当我将text=设置为新字符串时,它从未改变,最终保持不变 function submit () { var searchTerm = document.querySelector('#search-term').value; var replaceFunction = Function('input', document.querySelector('#function').value);

尝试查找字符串中的每个匹配项,并使用自定义函数处理它,然后在字符串中替换它。但是,当我将text=设置为新字符串时,它从未改变,最终保持不变

function submit () {
    var searchTerm = document.querySelector('#search-term').value;
    var replaceFunction = Function('input', document.querySelector('#function').value);
    var text = '<part id="cursor_crosshair" x="96" y="32" w="16" h="16" focusx="7" focusy="7" />';
    var output = text;
    var regex = new RegExp('\d', 'g');
    var match, matches = [];

    //search for replacements
    while ((match = regex.exec(text)) != null) {


        var beforeMatch = output.substring(0, match.index);
        var afterMatch = output.substring(match.index + match[0].length, text.length);

        text = beforeMatch + replaceFunction(match[0]) + afterMatch;
         console.log(text);

    }
    console.log('result', text);
}

function replaceFunction (input) {
    return input * 2;
}

使用replace和以match为参数的its,可以用更少的代码获得相同的结果

var text=; text=text.replace/\d+/g,functionmatch{ 返回parseIntmatch*2; }
console.logtext首先,如果使用的是RegExp构造函数,则需要使用\\作为转义序列。或者,您可以使用如下所示的RegExp文本。此外,您只使用\d,它将匹配一个数字。相反,您应该使用与完整数字匹配的\d+

参考:

使用构造函数时,正常的字符串转义规则 包含在字符串中时,前面带有\的特殊字符是 必需的例如,以下是等效的:

var re=/\w+/

var re=new RegExp'\\w+'

然后尝试使用循环操作字符串。相反,只需使用如下所示的replace函数即可

功能提交{ //var searchTerm=document.querySelector'search-term'。值; //var replaceFunction=Function'input',document.querySelector'Function'.value; var text=; var输出=文本; var regex=new RegExp'\\d+','g'//