Regex, чтобы проверить, если допустимый URL, который заканчивается в .jpg, .png, или .gif

У меня была похожая проблема, и оказалось, что вызов просто registerReceiver(broadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), без получения экземпляра LocalBroadcastManager, решил проблему.

Возможно, проблема заключалась в том, что получатель регистрировался в неверном объекте контекста. [не забудьте также позаботиться о отмене регистрации получателя]

Я сделал это так

public void onResume() 
{
    super.onResume();
    registerReceiver(broadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
}

public void onPause() 
{
    super.onPause();
    unregisterReceiver(broadcastReceiver);
}
30
задан 4 October 2008 в 02:53
поделиться

7 ответов

Вот основная идея в Perl. Соль для дегустации.

#!/usr/bin/perl

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;

@ARGV = qw(http://www.example.com/logo.png);

my $response = $ua->head( $ARGV[0] );

my( $class, $type ) = split m|/|, lc $response->content_type;

print "It's an image!\n" if $class eq 'image';

, Если необходимо осмотреть URL, пользуйтесь солидной библиотекой для него вместо того, чтобы пытаться обработать все нечетные ситуации сами:

use URI;

my $uri = URI->new( $ARGV[0] );

my $last = ( $uri->path_segments )[-1];

my( $extension ) = $last =~ m/\.([^.]+)$/g;

print "My extension is $extension\n";

Удача, :)

2
ответ дан 27 November 2019 в 22:56
поделиться

В целом Вы - более обеспеченные URL проверки, пользующиеся встроенной библиотекой или функциями платформы, вместо того, чтобы прокрутить Ваши собственные регулярные выражения, чтобы сделать это - видит , Что является лучшим регулярным выражением, чтобы проверить, является ли строка допустимым URL для деталей.

, Если Вы увлечены выполнением этого, тем не менее, проверяют этот вопрос:

Получение частей URL (Regex)

Затем после того как Вы удовлетворены URL (любыми средствами Вы раньше проверяли его), Вы могли или использовать простой строковый оператор типа "endswith" для проверки расширения или простого regex как

(?i)\.(jpg|png|gif)$
14
ответ дан 27 November 2019 в 22:56
поделиться

На самом деле.

, Почему Вы проверяете URL? Это не гарантия, что Вы собираетесь получить, изображение, и никакая гарантия, что вещи Вы отклоняете , не изображения. Попытайтесь выполнить ГЛАВНЫЙ запрос на нем и посмотрите, каково тип контента это на самом деле .

37
ответ дан 27 November 2019 в 22:56
поделиться
(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\.(?:jpg|gif|png))(?:\?([^#]*))?(?:#(.*))?

Это (немного изменено) версия официального URI, анализирующего regexp от RFC 2396 . Это позволяет #fragments и ?querystrings появляться после имени файла, которое может или не может быть тем, что Вы хотите. Это также соответствует любому допустимому домену, включая localhost, который снова не мог бы быть тем, что Вы хотите, но это могло быть изменено.

А более традиционный regexp для этого мог бы быть похожим ниже.

^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|gif|png)$
          |-------- domain -----------|--- path ---|-- extension ---|

РЕДАКТИРОВАНИЕ Видит мой другой комментарий , который, хотя не отвечает на вопрос так же полностью как этот, я чувствую, что это - вероятно, более полезное в этом случае. Однако я оставляю это здесь для распутства кармы причинами полноты.

69
ответ дан 27 November 2019 в 22:56
поделиться

Если Вы действительно хотите быть уверенными, захватывая первый килобайт, или два из данного URL должны быть достаточными для определения всего, что необходимо знать об изображении.

Вот пример того, как Вы можете получить ту информацию , с помощью Python, и здесь пример его вводимый в эксплуатацию как поле формы Django, которое позволяет Вам легко проверять существование изображения, размер файла, размеры и формат, учитывая его URL.

2
ответ дан 27 November 2019 в 22:56
поделиться
^((http(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.(jpg|png|gif))
1
ответ дан 27 November 2019 в 22:56
поделиться
(http(s?):)|([/|.|\w|\s])*\.(?:jpg|gif|png)

Это обработает все изображения из этой строки:

background: rgb(255, 0, 0) url(../res/img/temp/634043/original/cc3d8715eed0c.jpg) repeat fixed left top; cursor: auto;
<div id="divbg" style="background-color:#ff0000"><img id="bg" src="../res/img/temp/634043/original/cc3d8715eed0c.jpg" width="100%" height="100%" /></div>
background-image: url(../res/img/temp/634043/original/cc3d8715eed0c.png);
background: rgb(255, 0, 0) url(http://google.com/res/../img/temp/634043/original/cc3    _d8715eed0c.jpg) repeat fixed left top; cursor: auto;
background: rgb(255, 0, 0) url(https://google.com/res/../img/temp/634043/original/cc3_d8715eed0c.jpg) repeat fixed left top; cursor: auto;

Проверьте свое регулярное выражение здесь: https://regex101.com/r/l2Zt7S/1

13
ответ дан 27 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: