使用regex-Javascript将字符串中的数字替换为修改后的数字

使用regex-Javascript将字符串中的数字替换为修改后的数字,javascript,regex,google-apps-script,replace,Javascript,Regex,Google Apps Script,Replace,我是javascript新手,所以如果我错过了一些简单的东西,我深表歉意。我正在编写一个脚本,从工作表中的一个单元格中提取一个字符串,向任何适用的数字添加5%的增值税,并在新单元格中输出修改后的字符串。我很高兴正则表达式能够捕捉到我需要的数字,但要将修改后的字符串正确无误是一件棘手的事情 到目前为止,脚本如下所示: function strReplace() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = s

我是javascript新手,所以如果我错过了一些简单的东西,我深表歉意。我正在编写一个脚本,从工作表中的一个单元格中提取一个字符串,向任何适用的数字添加5%的增值税,并在新单元格中输出修改后的字符串。我很高兴正则表达式能够捕捉到我需要的数字,但要将修改后的字符串正确无误是一件棘手的事情

到目前为止,脚本如下所示:

function strReplace() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getActiveSheet();
   var str = sheet.getRange(4,2).getValue(); // A cell with a string like this: "ID: 10101010101010 | Price 1: £4.54 | Price 2: £2.87"

   var regex = /\d{1,8}(?:\.\d{1,8})/g  // Regex to ignore numbers greater than 8 digits, including decimals

   var newStr = str.match(regex);


   for (var x = 0; x < newStr.length; x++) {

    var newRates = newStr[x]*1.05;
    var output = str.replace(newStr, newRates)

    sheet.getRange(4,3).setValue(output);

    }                   
  }  
函数strReplace(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var str=sheet.getRange(4,2).getValue();//带有如下字符串的单元格:“ID:10101010101010 |价格1:4.54 |价格2:2.87”
var regex=/\d{1,8}(?:\.\d{1,8})/g//regex忽略大于8位的数字,包括小数
var newStr=str.match(regex);
对于(var x=0;x
我尝试了很多变化,但没有成功。我觉得有一种更简单的方法可以从我已经拥有的东西中实现我想要的东西。如有任何建议,将不胜感激


谢谢

要执行此类操作,请使用函数回调版本的
replace

var str=“ID:10101010101010 |价格1:4.54英镑|价格2:2.87英镑”;
var regex=/\d{1,8}(?:\.\d{1,8})/g;//正则表达式忽略大于8位的数字,包括小数
var输出=str.replace(正则表达式,函数(匹配){
返回1.05*匹配;
});

控制台日志(输出)
基本上,您的解决方案非常接近,您只需要分配
str.replace
,使用
newStr[x]
,并等待结束
for
将其分配到单元格中

检查下面的示例

函数strReplace(){
let str=“ID:10101010101010 |价格1:4.54英镑|价格2:2.87英镑”;
var regex=/\d{1,8}(?:\.\d{1,8})/g
var newStr=str.match(regex);
对于(var x=0;xlog(已替换)
最好包括代码生成的输出示例以及您期望的输出示例。