在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
答案 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);
}
它与下划线不匹配,因为您没有在字符类中指定下划线。