在Java应用程序中,我需要检查给定的字符串
我的第一次尝试就是:
public static void main(String[] args) {
String testString = "000000";
String myPattern = "\\d{5}";
Pattern validCharacterPattern = Pattern.compile(myPattern);
Matcher matcher = validCharacterPattern.matcher(testString);
boolean b = matcher.find();
if (b) System.out.println("Valid");
else System.out.println("Invalid");
}
然而,上述表达也适用于例如123456
。我需要改变什么?
答案 0 :(得分:6)
为了完整起见(即使问题已完全改变)
boolean b = matcher.find();
如果正则表达式包含在匹配字符串中的某处,则匹配。如果您使用matcher.matches
,您将获得预期的行为,它必须与ENTIRE字符串匹配。
或者你可以跳过编译步骤(如果这个正则表达式将被多次使用,不推荐使用。)完全只写:
String regex = "\\d{5}";
String test = "123456";
if(test.matches(regex)){ ... };
这基本上就是你在原始问题中所拥有的。
答案 1 :(得分:1)
你错了
然而,上述表达式对于例如123456.我需要改变什么?
false
的{{1}}。
示例代码:
123456
输出
String s = "123456";
String regex = "\\d{5}";
if (s.matches(regex))
System.out.println("found");
else
System.out.println("not found");
问题已被编辑。现在尝试使用正则表达式中的开始和结束。
not found
输出:
String testString = "000000";
String myPattern = "^(\\d{5})$";
Pattern validCharacterPattern = Pattern.compile(myPattern);
Matcher matcher = validCharacterPattern.matcher(testString);
boolean b = matcher.find();
if (b)
System.out.println("Valid");
else
System.out.println("Invalid");