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