如何让这个正则表达式^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,您匹配的字符串将以一个或多个数字开始,然后是一个非捕获组,该组出现一次或根本不出现,包含.
或,
,字面意思,以及一个或多个数字,然后结束。
这就是你所拥有的,这就是匹配的