0

すべてのURLを一致させたいのですが、その正規表現と一致するビーイングから画像のURLを除外します:jpe?g | gif|png。

\ b(?:https?| ftp | file):// [-A-Z0-9 +&@#/%?=〜_ | $!:、。;] * A-Z0-9 +&@# /%=〜_ | $

問題は、excludeのある部分が次のように機能していないことです:(?!jpe?g | gif | png)

誰かがそれに対する解決策を持っていますか?

例:

マッチェンではない:

http://example.com/example.jpg
http://example.com/example231/example.gif

マッチ:

http://example.com/example.html
http://example.com/example/?id=4331
http://example.com/example/example/ex_ample/ex-ample/?id=4331  
4

2 に答える 2

3

で正規表現を開始するだけ(?!.*(?:\.jpe?g|\.gif|\.png)$)です、

したがって、現在の正規表現がである場合は\b(?:https?|ftp|file)://...、それをにマージします

(?!.*(?:\.jpe?g|\.gif|\.png)$)\b(?:https?|ftp|file)://...

PHPのURL検証もお読みください

于 2012-06-25T22:09:48.413 に答える
0

最近重複した質問が閉じられたため、この問題に取り組んでいたので、ここに投稿します。

((?!.*(png|jpg|gif)(?!.))(?:https?|file|ftp):\/\/.*.\.(?:com|ca|net|museum|org|co\.uk))

必要に応じてプロトコルを追加し、必要に応じて画像拡張機能を追加し、必要に応じてトップレベルドメインを追加してください。

regex101でテスト済み

于 2014-06-12T18:45:30.370 に答える