2014-11-06 82 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>"); 
} 
相关问题