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--
应该是第一个或最后一个,或者在字符类中用作文本时转义,以使其更安全