GWT:如何让正则表达式(模式和匹配器)在客户端工作

Posted

技术标签:

【中文标题】GWT:如何让正则表达式(模式和匹配器)在客户端工作【英文标题】:GWT : how to get regex(Pattern and Matcher) working in client side 【发布时间】:2011-05-08 16:13:53 【问题描述】:

我们将 GWT 2.03 与 SmartGWT 2.2 一起使用。我正在尝试在客户端代码中匹配如下所示的正则表达式。

Pattern pattern = Pattern.compile("\\\"(/\d+)4\\\"");
String testString1 = "[    \"/2/4/5/6/8\",    \"/2/4/5/6\"]";
String testString2 = "[  ]";

Matcher matcher = pattern.matcher(testString1);
boolean result = false;
while (matcher.find()) 
    System.out.println(matcher.group());

看起来 Pattern 和 Matcher 类没有被 GWTC 编译器编译成 javascript,因此这个应用程序没有加载。什么是等效的 GWT 客户端代码,以便我可以在字符串中找到正则表达式匹配?

您是如何在客户端 GWT 中匹配字符串中的正则表达式的?

谢谢,

【问题讨论】:

【参考方案1】:

只需使用 String 类即可! 像这样:

String text = "google.com";
    if (text.matches("(\\w+\\.)1,2[a-zA-Z]2,4"))
        System.out.println("match");
    else
        System.out.println("no match");

它可以像这样正常工作,无需导入或升级或其他任何东西。 只需根据自己的喜好更改文本和正则表达式即可。

你好,格伦

【讨论】:

【参考方案2】:

考虑升级到 GWT 2.1 并使用 RegExp

【讨论】:

我希望我现在就可以。我没有足够的时间来测试我们的 2.1 应用程序——也许很快。【参考方案3】:

使用GWT JSNI调用原生Javascript正则表达式:

public native String jsRegExp(String str, String regex)
/*-
    return str.replace(/regex/);  // an example replace using regexp 
    
-*/;

【讨论】:

【参考方案4】:

也许您可以从 GWT 2.1 下载 RegExp 文件并将它们添加到您的项目中?

http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/regexp/

下载 GWT 2.1 包括源代码,将该目录添加到项目中的某个位置,然后使用 GWT XML 中的 <inherits> 标记添加对“RegExp.gwt.xml”的引用。

我不确定这是否可行,但值得一试。也许它引用了您没有的其他特定于 GWT 2.1 的东西,但我刚刚检查了一下代码,我认为它没有。

【讨论】:

【参考方案5】:

GWT 2.1 现在有一个 RegExp 类可以解决您的问题:

// Compile and use regular expression
RegExp regExp = RegExp.compile(patternStr);
MatchResult matcher = regExp.exec(inputStr);
boolean matchFound = regExp.test(inputStr);

if (matchFound) 
Window.alert("Match found");
    // Get all groups for this match
    for (int i=0; i<=matcher.getGroupCount(); i++) 
        String groupStr = matcher.getGroup(i);
        System.out.println(groupStr);
    
else
Window.alert("Match not found");

【讨论】:

以上是关于GWT:如何让正则表达式(模式和匹配器)在客户端工作的主要内容,如果未能解决你的问题,请参考以下文章

使用 Android 模式和匹配器类(正则表达式)

Python网页解析器使用实例详解

正则表达式中的子组模式

jQuery 选择器正则表达式

快速学习正则表达式,不用死记硬背,示例让你通透(上篇)

js正则匹配总结