我有一个关于正则表达式评估的问题。这是一些仅测试字符串中的数字的java代码:
import java.util.regex.*;
public class RegexPractice
{
public RegexPractice()
{
}
public static void checkNum(String pattern)
{
if(pattern.matches("^\\d*"))
{
System.out.println(pattern);
}
else
{
System.out.println("false");
}
}
public static void main(String args[])
{
checkNum("543853473");
checkNum("ipabgrieahgbre");
checkNum("frgwe9789fdsa798dfas");
checkNum("54336534 4364 546 654");
checkNum("");
checkNum(" ");
}
}
如果传递的字符串与正则表达式“^\d”匹配,则打印字符串,否则打印错误。我惊讶地发现空字符串被打印出来了。为什么会这样?因为它不包含数字。
我知道我可以通过不允许空字符串来解决这个问题,但我很好奇为什么它被评估为真的。