如果它只包含某些字符,则返回给定字符串

时间:2018-02-15 16:10:53

标签: java regex

我试图实现一种检查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 ??;
}

那里有正则表达式专业人士吗?

3 个答案:

答案 0 :(得分:0)

在匹配方法上试试这个正则表达式:

image\\[a-z0-9-.]{0,127}

这应该是:“image / anyletterswithmax127chars”

答案 1 :(得分:0)

^[a-z0-9]+.+-替换为^[-.a-z0-9]+"

答案 2 :(得分:0)

你可以在一个正则表达式中完成所有这些:

^image/[a-z0-9.-]{0,127}$

您可以测试此正则表达式here