为Java翻译正则表达式



如何让这个正则表达式^d+(?:[.,]d+)?$在Java中可用

input.matches("^\d+(?:[\.\,]\d+)?$"); // Redundant character escape

你的表达式很好。注:使用matches;在模式的开始处隐式地添加^,在模式的末尾添加$。此外,您不需要转义字符类中的字符。

input.matches("\d+(?:[,.]\d+)?");

你的代码执行得很好

public static void main(String[] args) throws Exception {
    String input = "123";
    System.out.println(input.matches("^\d+(?:[\.\,]\d+)?$"));
    input = "123.123";
    System.out.println(input.matches("^\d+(?:[\.\,]\d+)?$"));
    input = "123,123";
    System.out.println(input.matches("^\d+(?:[\.\,]\d+)?$"));
    input = "123..123";
    System.out.println(input.matches("^\d+(?:[\.\,]\d+)?$"));
}

打印

true
true
true
false

根据regex101,您匹配的字符串将以一个或多个数字开始,然后是一个非捕获组,该组出现一次或根本不出现,包含.,,字面意思,以及一个或多个数字,然后结束。

这就是你所拥有的,这就是匹配的

最新更新