如果我尝试使用带有变音符号的正则表达式字符串进行匹配(类似于 ^[a-zA-Z0-9áàAÁÁ ]{0,100}$),它会在服务器端匹配Báhhh(我调用了相同的验证两次),但在客户端上失败。我已经更改了Java类的编码,但仍无法匹配。
是否有专门用于变音符号的GWT正则表达式类,或者我漏掉了什么?
是否有专门用于变音符号的GWT正则表达式类,或者我漏掉了什么?
Java和JavaScript的正则表达式在实现上有所不同,这些差异可能并不总是清晰可见。我建议您针对每种情况使用不同的验证器-请查看GWT中的RegExp类:
两个实现之间存在一些小的不兼容性。正则表达式语法中的特定于Java的构造(例如[a-z&&[^bc]],(?<=foo),\A,\Q)仅在纯Java实现中工作,而不是GWT实现,并且两者都不会拒绝它们。此外,替换表达式中的Javscript特定构造$`和$'仅在GWT实现中工作,而不是纯Java实现,后者会拒绝它们。
奇怪,当我在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}$/