3

我有问题 javax.validation.constraints.Pattern @Pattern验证。@使用Unicode脚本的模式\ p {L} *不起作用

@Pattern(regexp = "\\p{L}*", message = "Msg") 
private String name; 

当我试图输入任何文本不起作用。

当我用:

@Pattern(regexp = "[a-zA-Z]*", message = "Msg") 

它的伟大工程与非拉丁字符。

+2

你可以定义“不工作”? – assylias

+0

你输入什么文字?请注意,此处的模式是锚定的,您只能键入字母。为了允许,例如空格也使用'[\\ p {L} \\ s] *'。 –

+0

我输入froms文本和验证器返回验证错误。 –

回答

1

您需要将\p{L}模式的Unicode识别为Pattern.UNICODE_CHARACTER_CLASS flag

启用Unicode版本的预定义字符类和POSIX字符类。

由于您使用的字符串模式,你可以使用内联(嵌入式)标志的变体,(?U)

regexp = "(?U)\\p{L}*"