尝试在字符串中查找每个匹配项,并使用自定义函数对其进行处理,然后将其替换为字符串。但是,当我将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/