【发布时间】:2013-01-21 09:24:43
【问题描述】:
在 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
它工作正常。
但是,它仍然不匹配下划线。例如,它不适用于以下 URL
https://sites.google.com/a/domain.com/image-store/_/rsrc/1351707816362/images/Image1.jpg
【问题讨论】:
-
在什么情况下不起作用?
-
如果您在 Google Apps 脚本中使用相同的代码,日志窗口会显示原始字符串并且不会将其替换为“new_url”
-
我注意到您的正则表达式没有在字符类中指定数字范围。您的 real 输入字符串是否可能在某处包含一个数字?
-
虽然真正的字符串包含一个数字,但不幸的是,这个也失败了。事实上,我已经放了 0-9 并没有多大帮助
-
好吧,为什么它会匹配下划线?你没有指定一个。请参阅下面我编辑的答案。