我有一个输入框用来输入电子邮件地址:
<h:inputText value="#{register.user.email}" required="true" />
如何在JSF 2/PrimeFaces中使用正则表达式验证输入值是否为有效的电子邮件地址?
我有一个输入框用来输入电子邮件地址:
<h:inputText value="#{register.user.email}" required="true" />
如何在JSF 2/PrimeFaces中使用正则表达式验证输入值是否为有效的电子邮件地址?
@
和.
字符出现来验证电子邮件格式。<f:validateRegex pattern="([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)" />
aa@bb.cc
作为地址并通过验证。没有正则表达式可以覆盖所有情况。如果电子邮件地址的有效性非常重要,请将其与身份验证系统相结合。只需向相关的电子邮件地址发送某种激活电子邮件,并提供一个回调链接,让用户通过电子邮件地址登录。下面是方法:
我自己使用的方法是...
<h:inputText id="email" value="#{settingsBean.aFriendEmail}" required="true" label="Email" validatorMessage="#{settingsBean.aFriendEmail} is not valid">
<f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
</h:inputText>
<p:message for="email" />
Daniel.
这是我的代码版本,它运行良好:
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
我制作了一个演示 这里
这个支持在电子邮件中使用Unicode域名:
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[\p{L}\p{M}\p{N}.-]*(\.[\p{L}\p{M}]{2,})$" />
...并且只有在输入电子邮件时才验证电子邮件(在表单中电子邮件不是必填字段):
<f:validateRegex pattern="(^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[\p{L}\p{M}\p{N}.-]*(\.[\p{L}\p{M}]{2,})$)?" />
<p:inputText id="email" required="true" label="email" size="40"
requiredMessage="Please enter your email address."
validatorMessage="Invalid email format"
value="#{userBean.email}">
<f:validateRegex
pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
</p:inputText>
<p:watermark for="email" value="Email Address *" />
<p:message for="email" />
<p:commandButton value="test" style="margin:20px"
action="#{userBean.register}" ajax="false" />