【问题标题】:GWT Regex working in DevMode, not working in ProductionGWT 正则表达式在 DevMode 中工作,而不是在生产中工作
【发布时间】:2014-11-06 14:50:57
【问题描述】:

我正在使用在 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&&[^bc]]、(?

不过,我不知道如何调整我的 RegEx,以便它在部署后运行。

这个网站 (http://planet.jboss.org/post/smartgwt_tip_regex_evaluation) 这么说:

解决方案是按从最复杂到最不复杂的 OR 选项排序

有什么想法可以让这个解决方案适应我的问题吗?

干杯, 蒂姆

【问题讨论】:

    标签: regex gwt dev-mode


    【解决方案1】:

    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>");
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 2015-08-10
      • 2019-04-30
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2019-06-10
      相关资源
      最近更新 更多