【问题标题】:GWT regex results differ from same regex in JavaGWT 正则表达式结果与 Java 中的相同正则表达式不同
【发布时间】:2013-12-18 18:46:53
【问题描述】:

我需要一个正则表达式来测试某个人的可能姓名。它应该包含拉丁字母、西里尔字母、空白字符和_ 符号。

在 Java 中,我编写了以下正则表达式,看起来这就是我所需要的:

String regex = "([\\w&&\\D]|[\\u0410-\\u044F]|[\\s])+"

在 GWT 中,这与预期不符:它接受 #$%^... 等标志。我必须将第一组写成[a-zA-Z_] 才能得到我想要的:字母和_ 符号。

此外,在我修改之前,有一个旧的正则表达式,看起来像

String regex = "([\\w&&\\D]+|[\\u0410-\\u044F]+|[\\s]+)";

根据我的 Java 经验,它应该只接受由拉丁字母和 _ 符号组合而成的单词,或者只接受由西里尔字母或来自空格的单词组合而成的单词。但实际上在 GWT 中它接受所有单词,甚至是 &*(... 等标志。

所以问题是:

1) 为什么[\\w&&\\D] 不等于 GWT 中的[a-zA-Z_]

2) 为什么 GWT 中的 [...]+|[...]+|[...]+ 表现得像 Java 中的 ([...]|[...]|[...])+

【问题讨论】:

    标签: java regex gwt


    【解决方案1】:

    GWT 生成 JS,所以可能是 JS 和 Java 的正则表达式不同。

    【讨论】:

    • 是的,这就是这里所说的:RegExp (Google Web Toolkit Javadoc)
    • 正则表达式和数字类型是 GWT 编译代码的两个主要语义缺陷(在开始使用 GWT 时尽早了解这一点非常好)。 GWT 中几乎没有其他“语言/JavaSE 级别”的惊喜,所以不要害怕。欲了解更多信息,请参阅gwtproject.org/doc/latest/…
    • 谢谢,Petteri,但是否有一些包含差异的列表或对这些差异的逻辑的一些解释?
    猜你喜欢
    • 2022-06-10
    • 2019-08-28
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多