我正在使用JSF的primefaces,我正在进行正则表达式检查电话号码的输入,接受的值是:
909888 90877845
这是我的代码
<p:inputText validatorMessage="invalid value">
<f:validateRegex pattern="^[+]?[0-9]+$" />
</p:inputText>
我的问题是表达式没有传递空值,因为该字段不是必需的
答案 0 :(得分:4)
你真的很接近,你需要在()?
中围绕整场比赛。这意味着正则表达式需要匹配整个内部1或0次。空字符串将针对0进行验证,您的+####
将验证该模式匹配一次的时间。
^([+]?[\d]+)?$
应该有效,它也会让它更容易阅读,因为\d
表示任何数字,但0-9
应该可以正常工作。我使用您的值和新添加的here进行了一些测试。
此外,如果有一个特定的数字可以在范围内(即如果数字的长度在6到8之间有效),您可以将[\d]+
修改为[\d]{x,y}
其中{{ 1}}和x
是您的最小/最大长度要求。