2012-03-23 73 views
0

我完全是java初學者。JAVA相當於Javascript REGEX

在javascript中,我有這個表達式:

/[^0-9.,\-\ ]/gi 

我如何可以做同樣在Java?

+0

你不能像你所說的那樣通過空間來說「逗號」。逃離HYPHEN-MINUS角色。 – tchrist 2012-03-23 14:26:37

+1

如果將未轉義的連字符作爲字符類中的最後一個或第一個字符,它也會起作用。不需要逃避空間角色! – Eric 2012-03-23 16:11:09

回答

0

如果你想針對正則表達式多次匹配的Java做的,你會怎麼做:

Pattern p = Pattern.compile("(?i)[^0-9.,-\ ]"); 
Matcher m = p.matcher(targetString); 

然後使用循環中的匹配器方法來獲得你想要的匹配。 「我」是一個不區分大小寫的標誌(你實際上並不需要,因爲沒有指定字符),但我不確定「g」標誌的等價物是什麼。我認爲這只是嘗試將模式重複應用於目標字符串,而不是嘗試匹配整個字符串,這就是上述代碼的作用。

此外,上面的模式一次只能匹配一個字符,實際上您可能需要[^0-9.,-\ ]*,它將與0或更多字符匹配,貪婪。如果我是你,我會閱讀Pattern課程上的文檔。

+0

在while循環中使用'find'方法相當於漸進式匹配的'/ g'標誌。 – tchrist 2012-03-23 14:26:05