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

安德烈·奥西尤克(Andrey Osiyuk)

尝试写搜索功能,将为数字几种不同格式搜索(例如:+############# (###) ###-##-#############等)的一种格式和格式(替换)( +7(###)###-##-##)。

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

功能。现在缺少替换功能。

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

regexp.exec(r.getValue()) 返回null。

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

安德烈·奥西尤克(Andrey Osiyuk)

问题出在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)
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章