如何使用Java正则表达式验证几何点?

时间:2011-03-21 19:16:51

标签: java regex

我试过这样 - 验证像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的解决方案。它没有帮助。

3 个答案:

答案 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*";