GWT Regex在DevMode工作,不在Production中工作

时间:2014-11-06 14:50:57

标签: regex gwt dev-mode

我使用的是在DevMode中工作的RegEx,但是在编译和部署之后却没有。它是扩展com.google.gwt.user.client.ui.SuggestOracle.Suggestion的类的一部分:

    @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;
}

官方文档(http://www.gwtproject.org/javadoc/latest/com/google/gwt/regexp/shared/RegExp.html)声明如下:

这两种实现之间存在一些小的不兼容性。正则表达式语法中的Java特定构造(例如[a-z&amp;&amp; [^ bc]],(?&lt; = foo),\ A,\ Q)仅在纯Java实现中起作用,而不在GWT实现中起作用。 ,并且不被任何一方拒绝。此外,Javascript特定的构造$`和$&#39;在替换表达式中只在GWT实现中工作,而不是拒绝它们的纯Java实现。

尽管如此,我还不知道如何调整我的RegEx,以便在部署后能够正常工作。

此网站(http://planet.jboss.org/post/smartgwt_tip_regex_evaluation)说明了这一点:

解决方案是从最复杂到最不复杂的

订购OR选项

Any想法如何使这个解决方案适应我的探测器?

干杯, 添

1 个答案:

答案 0 :(得分: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>");
}