我有正则表达式
^[0-9]{6}[A-Zööö|0-9]{1}[0-9]{3}$
当第一个字符是字母时,字段变为空。
我希望它保留字母。以下是我使用的表单验证代码:
if (!searchForm.getPersonnummer().equalsIgnoreCase("") && !LPWFormatValidator.validSSNFormat(pnr)) {
bindingResult.rejectValue("personnummer", "tg02.pnrFormat", "tg02.pnrFormat");
}
如何在表单字段中保留“错误文本”,但是将错误发送给用户?
答案 0 :(得分:0)
这部分
^[0-9]{6}
声明你的String需要以六位开头,然后才能预期字母。 如果您需要能够抓取信件,请将第一部分设为可选部分。
答案 1 :(得分:0)
如果您希望在表达式的开头有“6位数或无数字”,则将表达式修改为
^([0-9]{6})?[A-Zööö|0-9]{1}[0-9]{3}$
将“六位数”包装成()?
表示“零次或一次”。就目前而言,您的表达意味着以下内容:
^[0-9]{6} string must start (^) with exactly 6 digits
[A-Zööö|0-9]{1} exactly one character from A-Z, ööö| , or digit from 0-9
[0-9]{3} three digits
$ and nothing more ("end of string")
因此,正如你所说,你的正则表达式将匹配像
这样的东西123456A123
999999|000
但不是
The number you want is 123456xC123 but you're not getting it
您需要更清楚地解释其他字符串应该匹配/“保留”/捕获...