【问题标题】:Create javascript RegEx that will extract image name from url创建将从 url 中提取图像名称的 javascript RegEx
【发布时间】:2012-09-30 02:54:27
【问题描述】:

我希望你能帮助我创建一个从 url 中提取图像名称的正则表达式。几天来我一直在尝试创建正则表达式,但我无法让它工作。

案例: 我有一个使用 phpThumb 创建的图像 url,如下所示: \bla\thumb\phpThumb.php?src=/bla/images/thisistheimage.jpg&fltr[]=wmt|40|B|FFFFFF|georgia.ttf|35&hash=b7412f04f09cd6b488435231651d61453

不,我需要提取以下内容:thisistheimage.jpg

一些事实:

  • 图片名称前总是有一个“/”;
  • 图像名称后始终跟一个 amp (&);
  • 图片扩展名也可以是:jpeg、JPG、png、PNG、gif;

我设法抓住的只是带有(?:png|jpg|gif) 的图像扩展名。

你能帮我在这种情况下使用什么正则表达式吗?

我可以在 javascript 或 PHP 中使用正则表达式,你在哪里推荐它? (我使用javascript提交表单,表单动作是用PHP完成的)。

【问题讨论】:

  • 回复:“我可以在 javascript 或 PHP 中使用正则表达式,您在哪里推荐它?”:请记住,您不能信任表单中提交的任何内容,因为它来自以下代码在你的控制之外。您可能已经编写了与您的 PHP 页面交互的 JavaScript 代码,但您不能保证这是用于提交表单的代码。所以,如果没有相反的理由,你应该总是更喜欢在 PHP 中做一些服务器端的事情。
  • 进一步 ruakh 的评论:JavaScript 应该用于用户方便,而不是用于任何形式的数据安全或卫生。 始终在存储用户提交或提交的任何内容之前检查服务器端。

标签: php javascript regex


【解决方案1】:
/\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/i

我认为这应该可行。 i 标记不区分大小写

  • 匹配斜线/
  • 字母数字、 和 - 一个或多个 [A-Z0-9-]{1,}
  • 期间。
  • 扩展名 (?:png|jpg|gif|jpeg)

【讨论】:

  • 匹配但忽略前导斜杠的改进:/(?!\/)([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/i
  • 像魅力一样工作,非常感谢!您的解释有助于我理解它现在是如何以及为什么起作用的。 @Intelekshual :也感谢您与我们一起思考并发布改进!
【解决方案2】:

既然你已经标记了,为什么不通过document.images 得到你想要的图像呢?

像这样:

// add a proxy to all images in the page

var proxy = 'https://proxytea.appspot.com/'

for (var x=0; x<document.images.length; x++) {
    imagem = document.images[x];
    imagem.src = imagem.src.replace(location.protocol + '//', proxy);
}

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多