GWT正则表达式结果与Java中的相同正则表达式不同

时间:2013-12-18 10:30:29

标签: java regex gwt

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

在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中表现得像([...]|[...]|[...])+

1 个答案:

答案 0 :(得分:2)

GWT生成JS,原因可能是JS和Java之间的正则表达式差异。