我需要一个正则表达式来测试某个人的可能名称。它应包含拉丁字母,西里尔字母,空格字符和_
符号。
在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中表现得像([...]|[...]|[...])+
?
答案 0 :(得分:2)
GWT生成JS,原因可能是JS和Java之间的正则表达式差异。