匹配前导零的简单正则表达式

qojgxg4l  于 2021-07-09  发布在  Java
关注(0)|答案(5)|浏览(315)

我是不是误解了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);
        }
    }
}
vdzxcuhz

vdzxcuhz1#

检查一下这个代码…应该可以。

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);
        }
    }
}
rm5edbpk

rm5edbpk2#

这是您应该使用的模式:
^0.*
另外,为什么不使用startswith(“0”)——简单得多

x759pob2

x759pob23#

matches 尝试将模式与整个输入字符串匹配。。。你的输入字符串不仅仅是“字符串的开头后跟0”。
要么你需要 "0.*" (the) ^ 是不必要的,因为 matches 或者你可以创建一个 Pattern 然后使用:

if (pattern.matcher(text).lookingAt())

当然,不清楚为什么在这里使用regex,因为您可以使用:

if (text.startsWith("0"))
aamkag61

aamkag614#

String.match 想要匹配整个 String ,还有你的正则表达式 ^0 不。
相反,你需要一个正则表达式,比如: 0.* ,表示“字符串以0开头,后跟零个或多个字符”。或者,根据你的需要, 0\d* ,这意味着“字符串以0开头,后跟零个或多个数字”,这就是示例输入的样子。

if ("0115724848".matches("0\\d*"))
    System.out.println("leading zero.");
0sgqnhkj

0sgqnhkj5#

此正则表达式将匹配带前导零的数字,但不匹配“0”:/^0+[1-9]/

相关问题