0

在 Google Apps Scripts 中,我尝试使用以下函数使用 RegExp 匹配 URL。

function testRegex(){
  var str = "href='https://sites.google.com/a/domain.com/image-store/images/Image1.jpg?attredirects=0'";
  var regex = new RegExp('http[:a-zA-Z\.\/\-_]{0,100}Image1.jpg', 'gi');
  str = str.replace(regex,"new_url");
  Logger.log(str);
}

当我在http://www.regular-expressions.info/javascriptexample.html向正则表达式测试器中输入相同的正则表达式和字符串时,它可以工作。但是,它在 Google Apps 脚本中不起作用。

任何想法为什么?

编辑:我认为问题出在下划线上。替换为 \w 有帮助。所以,当我用

https[\.a-zA-Z0-9\/+:\w-]{0,100}Image1.jpg

有用。

但是,它仍然不匹配下划线。例如,它不适用于以下 URL

https://sites.google.com/a/domain.com/image-store/_/rsrc/1351707816362/images/Image1.jpg
4

2 回答 2

2

在斜杠后添加 + 可能会这样做:

function testRegex(){
  var str = "href='https://sites.google.com/a/domain.com/image-store/images/Image1.jpg?attredirects=0'";
  var regex = new RegExp('http[:a-zA-Z\.\/+\-_]{1,100}Image1.jpg', 'gi');
  str = str.replace(regex,"new_url");
  Logger.log(str);
}
于 2013-01-21T19:12:56.570 回答
0

我没有调试您的代码,但我在 repl.it 上进行了尝试,并验证它在 Chrome 的 V8 JavaScript 中也不正确。我怀疑这里有一个与 Apps 脚本无关的错误。

编辑:这有效:

function testRegex(){
  var str = "href='https://sites.google.com/a/domain.com/image-store/_/rsrc/1351707816362/images/Image1.jpg'";
  var regex = new RegExp('https[\.a-zA-Z0-9\/+:\w_-]{0,100}Image1.jpg', 'gi');
  str = str.replace(regex,"new_url");
  Logger.log(str);
}

它不匹配下划线,因为您没有在字符类中指定下划线。

于 2013-01-21T17:36:30.487 回答