我想检查我的号码是否与正则表达式匹配。
我想要实现的是检查数字是否与模式匹配,而不是执行代码。
我的if语句如下:
public String refactorNumber(String input){
if(input.matches("#,##0.##")) {
//execute code
}
}
但它从不匹配,我的输入数字是:
- 0
- 100
- 1,100.01
我做错了什么?
答案 0 :(得分:0)
看起来你还没有正确理解正则表达式语法。
从您的示例代码中,看起来您正在尝试匹配数字,后跟逗号,后跟两位数字,后跟零,后跟小数点,后跟两位数。
为此,您的正则表达式模式必须是:
\d,\d{2}0\.\d{2}
找出模式的一个很好的资源是这个正则表达式备忘单:
https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
很遗憾,该网站目前存在问题,因此您可以使用此Google搜索来查找它:
https://www.google.co.uk/search?q=regex+cheat+sheet&tbm=isch
答案 1 :(得分:0)
你可以这样做(如果我做错了,请纠正我):
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public static void main(String[] args) {
String input =" - 0\n"+
" - 100\n"+
" - 1,100.01\n"+
" - 100,100,3\n"+
" - 100,100,3.15\n"+
"";
refactorNumber(input);
}
public static void refactorNumber(String input){
Matcher m = Pattern.compile("((?:\\d,)?\\d{0,2}0(?:\\.\\d{1,2})?)(?!\\d*,)").matcher(input);
while (m.find()) {
//execute code
}