RegEx匹配URL

时间:2013-01-21 09:24:43

标签: regex google-apps-script

在Google Apps脚本中,我尝试使用以下函数使用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

IT工作。

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

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);
}

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