イメージファイルの拡張子を正規表現で検証する方法

正規表現で画像ファイルの拡張子を検証する方法

画像ファイル拡張子の正規表現パターン

([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

説明

(           #Start of the group #1
 [^\s]+         #  must contains one or more anything (except white space)
       (        #    start of the group #2
         \.     #   follow by a dot "."
         (?i)       #   ignore the case sensive checking for the following characters
             (      #     start of the group #3
              jpg   #       contains characters "jpg"
              |     #       ..or
              png   #       contains characters "png"
              |     #       ..or
              gif   #       contains characters "gif"
              |     #       ..or
              bmp   #       contains characters "bmp"
             )      #     end of the group #3
       )        #     end of the group #2
  $         #  end of the string
)           #end of the group #1

全体の組み合わせは、1つ以上の文字列(空白ではない)が必要であり、ドット「。」が続き、文字列が「jpg」または「png」または「gif」または「bmp」で終わることを意味します。 -インセンシティブ。

この正規表現パターンは、さまざまなファイルの広範なチェックに広く使用されています。 終了の組み合わせ(jpg|png|gif|bmp)を変更するだけで、必要に応じて異なるファイル拡張子チェックを行うことができます。

Java正規表現の例

package com.example.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ImageValidator{

   private Pattern pattern;
   private Matcher matcher;

   private static final String IMAGE_PATTERN =
                "([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";

   public ImageValidator(){
      pattern = Pattern.compile(IMAGE_PATTERN);
   }

   /**
   * Validate image with regular expression
   * @param image image for validation
   * @return true valid image, false invalid image
   */
   public boolean validate(final String image){

      matcher = pattern.matcher(image);
      return matcher.matches();

   }
}

一致する画像ファイル:

1. 「a.jpg」、「a.gif」、「a.png」、「a.bmp」、
2。 「..jpg」、「.. gif」、「.. png」、「.. bmp」、
3。 「a.JPG」、「a.GIF」、「a.PNG」、「a.BMP」、
4。 「a.JpG」、「a.GiF」、「a.PnG」、「a.BmP」、
5。 「jpg.jpg」、「gif.gif」、「png.png」、「bmp.bmp」

一致しない画像:

1. 「.jpg」、「。gif」、「。png」、「。bmp」–画像ファイル名が必要です
2。 ” .jpg”、” .gif”、” .png”、” .bmp” –最初の文字
3では空白は使用できません。 「a.txt」、「a.exe」、「a。」、「a.mp3」–画像ファイル拡張子のみが許可されます
3。 「JPG」、「GIF」、」PNG」、」BMP」 - 画像ファイルの拡張子が必要です

単体テスト– ImageValidator

package com.example.regex;

import org.testng.Assert;
import org.testng.annotations.*;

/**
 * Image validator Testing
 * @author example
 *
 */
public class ImageValidatorTest {

    private ImageValidator imageValidator;

    @BeforeClass
        public void initData(){
        imageValidator = new ImageValidator();
        }

    @DataProvider
    public Object[][] ValidImageProvider() {
       return new Object[][]{
             {new String[] {
           "a.jpg", "a.gif","a.png", "a.bmp",
           "..jpg", "..gif","..png", "..bmp",
           "a.JPG", "a.GIF","a.PNG", "a.BMP",
           "a.JpG", "a.GiF","a.PnG", "a.BmP",
           "jpg.jpg", "gif.gif","png.png", "bmp.bmp"
           }
              }
       };
    }

    @DataProvider
    public Object[][] InvalidImageProvider() {
      return new Object[][]{
        {new String[] {
           ".jpg", ".gif",".png",".bmp",
           " .jpg", " .gif"," .png"," .bmp",
                   "a.txt", "a.exe","a.","a.mp3",
           "jpg", "gif","png","bmp"
           }
             }
       };
    }

    @Test(dataProvider = "ValidImageProvider")
     public void ValidImageTest(String[] Image) {

       for(String temp : Image){
           boolean valid = imageValidator.validate(temp);
           System.out.println("Image is valid : " + temp + " , " + valid);
           Assert.assertEquals(true, valid);
       }

    }

    @Test(dataProvider = "InvalidImageProvider",
                 dependsOnMethods="ValidImageTest")
    public void InValidImageTest(String[] Image) {

       for(String temp : Image){
           boolean valid = imageValidator.validate(temp);
           System.out.println("Image is valid : " + temp + " , " + valid);
           Assert.assertEquals(false, valid);
       }
    }
}

単体テスト-結果

Image is valid : a.jpg , true
Image is valid : a.gif , true
Image is valid : a.png , true
Image is valid : a.bmp , true
Image is valid : ..jpg , true
Image is valid : ..gif , true
Image is valid : ..png , true
Image is valid : ..bmp , true
Image is valid : a.JPG , true
Image is valid : a.GIF , true
Image is valid : a.PNG , true
Image is valid : a.BMP , true
Image is valid : a.JpG , true
Image is valid : a.GiF , true
Image is valid : a.PnG , true
Image is valid : a.BmP , true
Image is valid : jpg.jpg , true
Image is valid : gif.gif , true
Image is valid : png.png , true
Image is valid : bmp.bmp , true
Image is valid : .jpg , false
Image is valid : .gif , false
Image is valid : .png , false
Image is valid : .bmp , false
Image is valid :  .jpg , false
Image is valid :  .gif , false
Image is valid :  .png , false
Image is valid :  .bmp , false
Image is valid : a.txt , false
Image is valid : a.exe , false
Image is valid : a. , false
Image is valid : a.mp3 , false
Image is valid : jpg , false
Image is valid : gif , false
Image is valid : png , false
Image is valid : bmp , false
PASSED: ValidImageTest([Ljava.lang.String;@1d4c61c)
PASSED: InValidImageTest([Ljava.lang.String;@116471f)

===============================================
    com.example.regex.ImageValidatorTest
    Tests run: 2, Failures: 0, Skips: 0
===============================================


===============================================
example
Total tests run: 2, Failures: 0, Skips: 0
===============================================

正規表現についてもっと知りたいですか? この最高の古典的な本を強くお勧めします–「正規表現の習得」

+
+