2011-03-21 62 views
2

我試圖這樣的 - 爲了驗證如x的點,Y如何使用Java正則表達式驗證幾何點?

「[0-9] {1,},[0-9] {1,}」

其不工作。

UPDATE:

我必須做一些錯誤的。這是通過掃描儀(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的解決方案。它沒有幫助。

+6

當要求用正則表達式的幫助,這將是給輸入的一些樣品應該匹配有用的,也許有些不應該。一般來說,不要只說「它不工作」,請解釋*它是如何工作的,以及您希望發生的事情。 – FrustratedWithFormsDesigner 2011-03-21 19:19:31

+0

你真的嘗試過'x,y'嗎?你的正則表達式匹配'數字,數字'字符串。 – codaddict 2011-03-21 19:19:44

+1

「它不工作」聽起來不像是一個有效的錯誤信息 – 2011-03-21 19:24:38

回答

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*"; 
+0

是的。嘗試使用調試器或'System.out.println(「|」+ getStringValue())+「|」)'給我們一些測試數據「不起作用」 – svrist 2011-03-21 19:56:35

+0

我的錯誤。顯示正確的輸出之前,該變量被覆蓋。謝謝你們。 – gekrish 2011-03-21 20:07:04

1

如果試圖「4,5」,它不工作,然後還有其他事情是錯的。

[email protected]:~$ rhino 
Rhino 1.7 release 2 2010 09 15 
js> /[0-9]{1,},[0-9]{1,}/.test("4,5"); 
true 

對於我來說,「4,5」確實匹配,所以你一定不要使用正則表達式正確。它看起來對我是正確的。你在用什麼語言?

-tjw