我有一个输入领域采取的电子邮件地址:电子邮件验证/ PrimeFaces
<h:inputText value="#{register.user.email}" required="true" />
我如何可以验证所输入的值使用正则表达式在JSF 2/PrimeFaces一个有效的电子邮件地址?
我有一个输入领域采取的电子邮件地址:电子邮件验证/ PrimeFaces
<h:inputText value="#{register.user.email}" required="true" />
我如何可以验证所输入的值使用正则表达式在JSF 2/PrimeFaces一个有效的电子邮件地址?
方法如下:
使用它自己...
<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" />
丹尼尔。
这里是我的版本,它工作得很好:
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
和我做了一个演示here
所有的正则表达式尝试验证基于拉丁字符的电子邮件格式破。他们不支持自2010年5月以来可用的internationalized domain names。是的,您阅读正确,非拉丁字符是允许在域名,因此也允许电子邮件地址。
这是非常多的可能字符来验证。最好的就是保持简单。以下正则表达式仅基于@
和.
字符的出现来验证电子邮件格式。
<f:validateRegex pattern="([^[email protected]]+)(\.[^[email protected]]+)*@([^[email protected]]+\.)+([^[email protected]]+)" />
此外,这只是验证一般的电子邮件格式,而不是电子邮件本身是否合法。仍然可以输入[email protected]
作为地址并通过验证。没有一个正则表达式可以覆盖这一点。如果电子邮件地址的有效性很重要,请将其与认证系统结合使用。只需发送某种具有回复链接的激活电子邮件到相关电子邮件地址,并让用户通过电子邮件地址登录即可。
这一个支持Unicode域名的电子邮件:
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[\p{L}\p{M}\p{N}.-]*(\.[\p{L}\p{M}]{2,})$" />
...并且只输入时的邮箱(email不需要在表单字段)这一个验证电子邮件:
<f:validateRegex pattern="(^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[\p{L}\p{M}\p{N}.-]*(\.[\p{L}\p{M}]{2,})$)?" />
如何更新上面的正则表达式,只有有效的域名:.com,.net,.org,.edu? 也有任何想法如何使这个验证焦点丢失? –
这里是:' ' –
Daniel
不适用于包含加号的完全有效的电子邮件,例如[email protected]。 – Igor