我试图实现一种检查String
不同内容的方法:
首先,String必须看起来像这样:
image/<subtype>
。
这意味着,从开头到第5个字符的子字符串必须是image/
。
此外<subtype>
最多只能有127个字符。这可以通过检查完整String
的长度不超过133(因为image/
有6个字符)来测试。
现在可以测试从第6个字符串到完整字符串结尾的子字符串。它只允许包含&#34; a-z&#34;,&#34; 0-9&#34; &#34; - &#34;和&#34;。&#34;。
我的方法目前看起来像这样:
public static String requireValidImageMimeType(String mimeType){
if(mimeType.length() > 133){
throw new IllegalArgumentException();
}
if (mimeType.startsWith("image/")) {
String mimeTypeToTest = mimeType.substring(6, mimeType.length());
//TODO Create Regex Pattern
if (mimeTypeToTest.matches("^[a-z0-9]+.+-")){
return mimeType;
}
}
return ??;
}
那里有正则表达式专业人士吗?
答案 0 :(得分:0)
在匹配方法上试试这个正则表达式:
image\\[a-z0-9-.]{0,127}
这应该是:“image / anyletterswithmax127chars”
答案 1 :(得分:0)
将^[a-z0-9]+.+-
替换为^[-.a-z0-9]+"
答案 2 :(得分:0)