Java 仅包含字母时,Regexp返回空白
我有一个正则表达式Java 仅包含字母时,Regexp返回空白,java,regex,validation,Java,Regex,Validation,我有一个正则表达式 ^[0-9]{6}[A-Zööö|0-9]{1}[0-9]{3}$ 当第一个字符是字母时,字段变为空 我想要它来保存这些信件。以下是我使用的表单验证代码: if (!searchForm.getPersonnummer().equalsIgnoreCase("") && !LPWFormatValidator.validSSNFormat(pnr)) { bindingResult.rejectValue("personnummer", "tg
^[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-9]{6}
声明您的字符串需要以六位数字开头,然后才能使用字母。
如果需要能够抓取字母,请将第一部分设置为可选。如果要在表达式开头添加“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
您需要更清楚地解释应该匹配/保留/捕获哪些其他字符串…您的表达式当前表示“前六个字符必须是数字”
^[0-9]{6}
-这就是为什么会为空。你能举例说明你希望某些字符串变成什么吗<代码>作业成本->作业成本;123abc->'';123456abc->123456或其他什么…您发布的正则表达式中有一些不寻常的字符(“A-Zö|”)…表达式控件包含表单4312253332上的社会保险号,但当用户只输入字母时,字段将空白,我想要一个信息,它是错误的,字母保留。这些字母是不寻常的,因为它是瑞典语。听起来这不是关于正则表达式的问题,而是关于表单验证的问题?你的“特殊角色”三次呈现为相同的“o with umlaut”;还有一个
,当我怀疑你认为你在写“或”…我如何使它成为可选的如果你不想有数字或6位数(而不是任何数量或最多6位数),Floris的建议可以解决你的问题:^(\d{6})?