我是否误解了有关Java正则表达式的内容?以下不应与前导零匹配:
public class Testit {
public static void main(String[] args) {
format("0115724848");
}
private static void format(String elementToFormat) {
if (elementToFormat.matches("^0")) {
System.out.println("leading zero:" + elementToFormat);
} else {
System.out.println("no leading zero:" + elementToFormat);
}
}
}
答案 0 :(得分:4)
String.match
想要匹配整个String
,而您的正则表达式^0
不会。
相反,你需要一个正则表达式:0.*
,这意味着"字符串以0开头,后跟零个或多个字符"。或者,根据您的需要,0\d*
,这意味着"字符串以0开头,后跟零或更多数字",这就是您的示例输入的样子。
if ("0115724848".matches("0\\d*"))
System.out.println("leading zero.");
答案 1 :(得分:4)
matches
尝试将模式与输入字符串的整个进行匹配...并且您的输入字符串不仅仅是“字符串开头后跟0”。
您需要"0.*"
(^
是不必要的,因为matches
会匹配整个字符串),或者您可以创建Pattern
然后使用:
if (pattern.matcher(text).lookingAt())
当然,目前尚不清楚为什么你在这里使用正则表达式,因为你可以使用:
if (text.startsWith("0"))
答案 2 :(得分:2)
这是您应该使用的模式:
^ 0。*
另外为什么不使用 startsWith(“0”) - 更简单
答案 3 :(得分:0)
检查此代码..它应该可以工作。
public class Testit {
public static void main(String[] args) {
format("0115724848");
}
private static void format(String elementToFormat) {
if (elementToFormat.matches("^0.*")) {
System.out.println("leading zero:" + elementToFormat);
} else {
System.out.println("no leading zero:" + elementToFormat);
}
}
}
答案 4 :(得分:0)
此正则表达式将匹配带前导零的数字,但不匹配“0”:/ ^ 0 + [1-9] /