Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅包含字母时,Regexp返回空白_Java_Regex_Validation - Fatal编程技术网

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})?