【问题标题】:Pattern working on regex101 but not with Google Script [duplicate]模式适用于 regex101 但不适用于 Google 脚本 [重复]
【发布时间】:2019-01-30 17:30:11
【问题描述】:

我正在尝试匹配 Google Docs 中的某些段落,但在 Google Script 中运行时,我想使用的模式与字符串不匹配。但是,它在regex101 上正常工作,所以我想我错过了一些东西。你知道吗?

这是我所拥有的示例:

function test() {
  var str = "brown fox → jumps over the lazy dog";
  var definitionRe = new RegExp('([\w\s]+)\s+[\u2192]\s+(.+)', 'g');
  var definitionMatch = definitionRe.exec(str); // null

  var dummy = "asdf"; // makes the debugger happy to break here
}

【问题讨论】:

  • 我认为你需要逃避你的转义模式,所以\w\s变成\\w\\s等等......
  • @GetOffMyLawn 是 2 个斜线
  • @CodeManiac 谢谢我更新了
  • @GetOffMyLawn 哇,你是对的!它现在正在工作!谢谢;-)
  • 我不认为这是重复的,所以它被错误地关闭了。

标签: javascript regex google-apps-script


【解决方案1】:

当使用new RegExp(...)这样的字符串正则表达式时,你需要转义你的\,所以如下:

var definitionRe = new RegExp('([\w\s]+)\s+[\u2192]\s+(.+)', 'g');

会变成这样的转义版本:

var definitionRe = new RegExp('([\\w\\s]+)\\s+[\\u2192]\\s+(.+)', 'g');

否则你可以做一个非字符串版本,但你不能再将值连接到字符串(如果这是你想要的):

var definitionRe = /([\w\s]+)\s+[\u2192]\s+(.+)/g;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    相关资源
    最近更新 更多