2014-11-06 71 views
2

我正在使用在DevMode中工作但尚未編譯和部署的RegEx。這是一類延伸com.google.gwt.user.client.ui.SuggestOracle.Suggestion的一部分:(http://www.gwtproject.org/javadoc/latest/com/google/gwt/regexp/shared/RegExp.htmlGWT Regex在DevMode中工作,未在生產中工作

@Override 
public String getDisplayString() { 
    String toReturn = myUser.getName() + " (" + myUser.getUserid() + ") " + (myUser.getCompanyname() == null ? "N/A" : myUser.getCompanyname()); 
    return toReturn.replaceAll("(?i)" + "(" + myInput + ")", "<b>$1</b>"); 
    return toReturn; 
} 

官方文檔指出以下幾點:

有幾個小兩種實現之間不兼容。正則表達式語法中的Java特定結構(例如[az & & [^ bc]],(?< = foo),\ A,\ Q)僅適用於純Java實現,而不適用於GWT實現,被任一方拒絕。而且,替換表達式中特定於JavaScript的構造函數$`和$'僅在GWT實現中起作用,而不是純粹的Java實現,它會拒絕它們。

不過,我不知道如何調整我的RegEx,以便它在部署後可以正常工作。

此網站(http://planet.jboss.org/post/smartgwt_tip_regex_evaluation)這樣說:

解決的辦法是按照從最複雜或選項,以最不復雜的

的任何想法如何適應這個解決我的probem?

乾杯, 添

回答

2

JavaScript不支持(?i)切換到不區分大小寫的匹配。

最好的辦法是使用com.google.gwt.regexp.shared.RegExp

public String getDisplayString() { 
    String toReturn = myUser.getName() + " (" + myUser.getUserid() + ") " + (myUser.getCompanyname() == null ? "N/A" : myUser.getCompanyname()); 
    return RegExp.compile(myInput, "ig").replace(toReturn, "<b>$&</b>"); 
}