尝试在字符串中查找每个匹配项,并使用自定义函数对其进行处理,然后将其替换为字符串。但是,当我将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作为参数的function's callback,您可以用更少的代码获得相同的结果。



var text = '<part id="cursor_crosshair" x="96" y="32" w="16" h="16" focusx="7" focusy="7" />';

text = text.replace(/\d+/g, function(match){
  return parseInt(match) * 2;
})

console.log(text)

关于javascript - 在进行正则表达式搜索时处理输入字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48976019/

10-17 03:13