GWT正则表达式中的变音符号

4
如果我尝试使用带有变音符号的正则表达式字符串进行匹配(类似于 ^[a-zA-Z0-9áàAÁÁ ]{0,100}$),它会在服务器端匹配Báhhh(我调用了相同的验证两次),但在客户端上失败。我已经更改了Java类的编码,但仍无法匹配。
是否有专门用于变音符号的GWT正则表达式类,或者我漏掉了什么?
2个回答

1

Java和JavaScript的正则表达式在实现上有所不同,这些差异可能并不总是清晰可见。我建议您针对每种情况使用不同的验证器-请查看GWT中的RegExp类

两个实现之间存在一些小的不兼容性。正则表达式语法中的特定于Java的构造(例如[a-z&&[^bc]],(?<=foo),\A,\Q)仅在纯Java实现中工作,而不是GWT实现,并且两者都不会拒绝它们。此外,替换表达式中的Javscript特定构造$`和$'仅在GWT实现中工作,而不是纯Java实现,后者会拒绝它们。


1

奇怪,当我在Chrome的JS控制台中运行/^[a-zA-Z0-9áàAÁÁ ]{0,100}$/.test('Báhhh')时,它返回true

我怀疑这是一个Unicode问题,其中á可以用几种方式编码:U+0061 U+0301、U+0061 U+0341或U+00E1。

也许尝试一下/^(?:[a-zA-Z][\u0301\u0341]?|[áàÁÁ0-9 ]){0,100}$/


1
不,尽管在控制台中一切都正常,但在客户端,GWT正则表达式的验证方式并不相同! - user1021138
1
好了,现在它开始工作了...我没有真正改变太多,只是在类上改变了编码,但我确定之前尝试过这样做,但它并没有起作用! - user1021138

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接