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:如何让正则表达式(模式和匹配器)在客户端工作的主要内容,如果未能解决你的问题,请参考以下文章