正方形括号内的正则表达式匹配方括号Google电子表格

时间:2017-03-14 21:11:32

标签: javascript regex google-sheets

我目前正在使用Google Script编写脚本。我试图通过写一些方式来选择方括号内的字符:

var cleantext = text.replace(/[^\s\w"!,、。\.??!:]/g,'');

我也希望保持" ["和"]"我在这里尝试了一些教程" \\]"和" \\ ["

var cleantext = text.replace(/[^\s\w"!,、。\.??!:"\\]""\\["]/g,'');

或尝试\\]和\\ [

var cleantext = text.replace(/[^\s\w"!,、。\.??!:\\]\\[]/g,'');

请随时改变我的问题措辞,因为我发现我可能不知道我在这里问的问题是什么,因为这里有很多类似问题的类似问题在Stackoverflow。

我想编辑一整列单元格,它们是日文,中文和英文字符的组合。

举个例子: "こんにちは,私はJimです| [Audio.Category:吉姆]" 会输出到: "こんにちは,私はJimです[Audio.Category:Jim]"

删除表情符号以及括号内未定义的其他字符。

1 个答案:

答案 0 :(得分:2)

要将][包含到JavaScript正则表达式字符类中,您需要转义],而不必转义[

/[abc[\]xyz]/
     ^^^

如果您需要支持ASCII字母和日语,则需要添加Japanese letter ranges

/[^\s"!,、。.??!:[\][A-Za-z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF\u2605-\u2606\u2190-\u2195\u203B]+/g

以下是一个示例解决方案:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.getRange('F13').getValue();
  Logger.log(cell);
  var reg_ascii_letter = "A-Za-z";
  var reg_japanese_letter = "\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF\\u2605-\\u2606\\u2190-\\u2195\\u203B";
  var rx = new RegExp("[^\\s\"!,、。.??!:[\\][" + reg_ascii_letter + reg_japanese_letter + "]+", "g");
  Logger.log(rx);
  var nval = cell.replace(rx, '').replace(/(\s){2,}/g, '$1');
  sheet.getRange('F15').setValue(nval);
}

enter image description here

以类似的方式,您可以为任何字母构建Unicode正则表达式。