イメージファイルの拡張子を正規表現で検証する方法
画像ファイルの拡張正規表現パターン
([^\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
全体の組み合わせは、 “jpg”または “png”または “gif”または “bmp”の文字列の末尾に1つ以上の文字列(空白ではない)が続く必要があります。非感受性。
この正規表現パターンは、さまざまなファイルの大規模な検査に広く使用されています。あなたはあなたのニーズに合った別のファイル拡張子チェックを出すためにエンドの組み合わせ
(jpg | png | gif | bmp)
を変更することができます。
Javaの正規表現の例
package com.mkyong.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。 「…jpg」、「a.jpg」、「a.png」、「a.bmp」、「2.jpg」、「..gif」、「.. png」、「..bmp」、 “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” – 空白「a.txt」、「a.exe」、「a。」、「a.mp3」 – 画像ファイルの拡張子はallow + 3です。「jpg」、「gif」、 “png”、 “bmp” – 画像ファイルの拡張子が必要です
単体テスト – ImageValidator
package com.mkyong.regex; import org.testng.Assert; import org.testng.annotations.** ; /** ** ** Image validator Testing ** @author mkyong ** ** /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.mkyong.regex.ImageValidatorTest Tests run: 2, Failures: 0, Skips: 0 =============================================== =============================================== mkyong Total tests run: 2, Failures: 0, Skips: 0 ===============================================
正規表現の詳細を知りたいですか?このベストと古典的な本を強くお勧めします – “正規表現のマスター”
+
+