使用Javascript编写正则表达式来替换Excel中的字符串值的正确方法是什么?

hgqdbh6s  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(122)

我编写了下面的代码来遍历Excel工作表中的C列到E列,从第2行检索正则表达式,并尝试在A列的每个文本字符串(tempText)中查找匹配项。如果找到匹配项,它将在其他工作表的特定单元格中记录匹配项,并将匹配的表达式替换为第1行中的相应值。因此,根据下图,B列将包含内容
B2 -市中心之间!购物中心
B3 -国王大道之间#
B4 -简站之间!公园
enter image description here

问题:替换没有发生,似乎javascript无法识别正则表达式。我不知道如何可以重写这是我的代码

var z = 1;
      for (let h = 3; h <= 5; h++) {    
        const RegXX = activeWorksheet.getRow(2).getCell(h).value;
        const regex = new RegExp(RegXX, 'gi');
        const match = tempText.match(regex);
        if (match) {
            var row3 = extracts2Worksheet.getRow(2);
            row3.getCell(z).value = match[0];
            
            //row3.getCell(z).value = txt_extracts[j];
          // write the match to the "Extracts-2" worksheet
        tempText = tempText.replace(regex, activeWorksheet.getRow(1).getCell(h).value);
            z++;
            row3.commit();
            activeWorksheet.getRow(i).getCell(1).value = tempText;

                               }
                           }

我试过用不同的方法写正则表达式,但似乎都不起作用。

rn0zuynd

rn0zuynd1#

不要在电子表格中的正则表达式中使用双反斜杠; Excel单元格不是JavaScript字符串文字。在正则表达式中,表示数字的方式是\d,带有一个反斜杠;你只需要 type 它为\\d,如果你把它放在JavaScript代码中的文字中:

> console.log('\\d')
\d

相关问题