当仅包含字母时,Regexp返回空白

时间:2014-01-15 13:23:09

标签: java regex validation

我有正则表达式

  ^[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");
}

如何在表单字段中保留“错误文本”,但是将错误发送给用户?

2 个答案:

答案 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

您需要更清楚地解释其他字符串应该匹配/“保留”/捕获...