我们的 Spring MVC 应用程序使用视图 bean 上的 @Pattern 注释来限制我们的用户可以输入的字符。
@Pattern(regexp = "[a-zA-Z0-9_.]*")
private String username;
我们正在将应用程序本地化为各种欧洲语言(法语、德语等),并希望包含其他字符,例如带有重音和变音符号的字符。
我觉得我们应该集中精力排除我们不想要的角色,还是有更好的方法?
我们的 Spring MVC 应用程序使用视图 bean 上的 @Pattern 注释来限制我们的用户可以输入的字符。
@Pattern(regexp = "[a-zA-Z0-9_.]*")
private String username;
我们正在将应用程序本地化为各种欧洲语言(法语、德语等),并希望包含其他字符,例如带有重音和变音符号的字符。
我觉得我们应该集中精力排除我们不想要的角色,还是有更好的方法?
我认为\p{L}
这就是您要寻找的东西。那是 unicode 字符的字符类。另请参阅 Pattern 类的文档。
您也可以将此模式 [\\p{IsL}] 用于 Unicode 字符。它包括重音符号 (á é í ó ú) 和其他欧洲字符 (ñ ...)
考虑使用这种模式:
@Pattern(regexp = "^[a-zA-Z0-9_.\u00C0-\u1FFF\u2C00-\uD7FF]*$")
private String username;
请注意,它也包括非欧洲语言。虽然,\p{L}
也应该可以正常工作:
@Pattern(regexp = "^[\\p{L}0-9_.]*$")
private String username;
请参阅https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html