如何使RegExp工作? (Google Apps脚本)

时间:2018-01-19 19:35:06

标签: javascript regex google-apps-script

尝试写搜索功能,搜索几种不同格式的数字(示例:+############# (###) ###-##-#############等)并以一种格式格式化(替换)({ {1}})。

注意:格式表示用正确格式化的字符串替换字符串,但不使用格式化设置

功能。它现在缺乏替换功能。

+7(###)###-##-##

记录器输出:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();

var history = ss.getSheetByName('sheetname');
ss.setActiveSheet(history);

for(i = 1; i <= history.getMaxRows(); i += 1) {
  var r = history.getRange('D' + i)

  var regexp = RegExp ('/+\d{11}', 'g')

  Logger.log("Value: " + r.getValue())

  if (regexp.exec(r.getValue()) !== null ) {
      Logger.log('true')
    } else {
      Logger.log('false')
    }
}

Line 1: Value: +#(###)###-##-## Line 2: false Line 3: Value: +########### Line 4: false Line 5: Value: +########### Line 6: false 返回null。

我在第4和第6行得到了真实。

1 个答案:

答案 0 :(得分:1)

问题发生在var regexp = RegExp ('/+\d{11}', 'g')。当我写var regexp = /\+\d{11}/时,它开始工作。

感谢ctwheels。他写了正则表达式,找到了所有格式并替换为正确的格式。

最终解决方案

for(i = 1; i <= history.getMaxRows(); i += 1) {

  var r = history.getRange('D' + i);
  var regexp = /\+?(\d{1,2}?)(?: *\()?(\d{3})(?:\) *)?(\d{3})-?(\d{2})-?(\d{2}\b)/
  var replace = '+7($2)$3-$4-$5';

  if (regexp.exec(r.getValue()) !== null ) {
    var repla = r.getValue().replace(regexp, replace)
    r.setValue(repla)
  }
}