Java Regex只验证零
我试图找到只验证零的正则表达式“0”、“00”、“000”…Java Regex只验证零,java,regex,Java,Regex,我试图找到只验证零的正则表达式“0”、“00”、“000”… import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestRegExp { public static String REG_EXP_ONLY_ZEROS = "(0)+"; public static void main(String[] args)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegExp {
public static String REG_EXP_ONLY_ZEROS = "(0)+";
public static void main(String[] args) {
Pattern pat = Pattern.compile("0");
Matcher mat = pat.matcher(REG_EXP_ONLY_ZEROS);
if (mat.matches()) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
几次失败的尝试:“0+,“0{1,}”…
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegExp {
public static String REG_EXP_ONLY_ZEROS = "(0)+";
public static void main(String[] args) {
Pattern pat = Pattern.compile("0");
Matcher mat = pat.matcher(REG_EXP_ONLY_ZEROS);
if (mat.matches()) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
您似乎混淆了模式和要验证的输入
公共类TestRegExp{
公共静态字符串REG_EXP_ONLY_ZEROS=“0+”;
公共静态void main(字符串[]args){
Pattern pat=Pattern.compile(仅限REG_EXP__零);
字符串[]输入={“0”、“0banana”、“00”、“000”、“banana0”、“0”);
for(字符串输入:输入)
{
匹配器垫=匹配器(输入);
if(mat.matches())
{
System.out.println(“是”);
}
其他的
{
系统输出打印项次(“否”);
}
}
}
}
其输出:
YES
NO
YES
YES
NO
NO
使用
String.matches
时,您还需要添加起始(^
)和结束($
)指示符(使您的模式^0+$
),但对于Matcher.matches
情况并非如此。模式。compile
应使用参数regexAlso,您当前的正则表达式将接受a0
以及0a
。使用^
和$
来分隔行的开头和结尾:^0+$
(如果这是预期的行为)@Phillip在使用Matcher.matches()时,开始和结束锚定^
分别<代码>$
不可用needed@Lino我不知道这一点,感谢您澄清,Matcher.matches()
似乎您是正确的,我将编辑我的答案