Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果给定字符串只包含某些字符,则返回该字符串_Java_Regex - Fatal编程技术网

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

Java 如果给定字符串只包含某些字符,则返回该字符串,java,regex,Java,Regex,我正在尝试实现一种方法,用于检查字符串中的不同内容: 首先,字符串必须如下所示: image/。 这意味着,从开始到第5个字符的子字符串必须是image/。 另外,最多只能有127个字符。这可以通过检查完整的字符串长度不超过133(因为图像/有6个字符)来测试。 现在可以测试从第6个字符到完整字符串结尾的子字符串。它只允许包含“a-z”、“0-9”-“和”。 目前我的方法是这样的: public static String requireValidImageMimeType(String mim

我正在尝试实现一种方法,用于检查
字符串
中的不同内容: 首先,字符串必须如下所示:
image/
。 这意味着,从开始到第5个字符的子字符串必须是
image/
。 另外,
最多只能有127个字符。这可以通过检查完整的
字符串长度不超过133(因为
图像/
有6个字符)来测试。 现在可以测试从第6个字符到完整字符串结尾的子字符串。它只允许包含“a-z”、“0-9”-“和”。 目前我的方法是这样的:

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 ??;
}

有什么正则表达式的优点吗?

试试这种匹配正则表达式的方法:

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

这应该是:“image/anyletterswithmax127chars”

将您的
^[a-z0-9]+.+-
替换为
^[-.a-z0-9]+”
您可以在一个正则表达式中完成所有这些操作:

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

您可以测试这个正则表达式,但它漏掉了“.”和-“不是吗?哦,当然,我对用正确的正则表达式更新的\w感到困惑。那么问题是什么?您想要有效的正则表达式或句柄
返回???
还是其他什么?您想要返回的是字符串不匹配?抱歉,我的解释似乎有点不清楚。如果输入字符串符合条件,则应返回该字符串。斜杠在正则表达式中没有特殊含义,因此无需转义。有些语言用斜杠分隔整个正则表达式,但java不是这些语言中的一种。括号内的
-
文本不应该是表达式的第一个字符(为了安全)?@boob yes-
-
应该是第一个或最后一个,或者在字符类中用作文本时转义,以使其更安全