我试过这样 - 验证像x,y
这样的点“[0-9] {1,},[0-9] {1,}”
它不起作用。
更新:
我一定是做错了。这是一个通过Scanner(System.in)输入的简单控制台 - 使用Scanner#nextLine返回一个字符串。
private static String REGEX_PATTERN = "[0-9]{1,}[,][0-9]{1,}";
private static Pattern regExPattern = Pattern.compile(REGEX_PATTERN);
private static Matcher regExMatcher;
regExMatcher = regExPattern.matcher(getStringValue());
isValid = regExMatcher.matches();
我也尝试了svrist的解决方案。它没有帮助。
答案 0 :(得分:1)
答案 1 :(得分:1)
如果你试过“4,5”并且它不起作用,那么别的东西就错了。
tjwebb@latitude:~$ rhino
Rhino 1.7 release 2 2010 09 15
js> /[0-9]{1,},[0-9]{1,}/.test("4,5");
true
对我而言,“4,5”确实匹配,因此您不能正确使用正则表达式。它对我来说是正确的。你用的是哪种语言?
-tjw
答案 2 :(得分:1)
它正在运作:
public class Test {
private static String REGEX_PATTERN = "[0-9]{1,}[,][0-9]{1,}";
private static Pattern regExPattern = Pattern.compile(REGEX_PATTERN);
private static Matcher regExMatcher;
public static void main(String[] args) {
test("1,3"); // true
test("123"); // false
test("1-3"); // false
test("123,456"); // true
test("123, 56"); // false
test(" 23,456"); // false
test("123,456\n"); // false
}
private static void test(String string) {
regExMatcher = regExPattern.matcher(string);
boolean isValid = regExMatcher.matches();
System.out.printf("\"%s\" - %s%n", string, isValid);
}
}
也许getStringValue()
会返回一些额外的字符,例如白色空格或换行符
要忽略空格,请尝试使用
REGEX_PATTERN = "\\s*\\d+\\s*,\\s*\\d+\\s*";