web-dev-qa-db-ja.com

JSF 2 / PrimeFacesの正規表現を使用したメール検証

メールアドレスを入力する入力フィールドがあります:

<h:inputText value="#{register.user.email}" required="true" />

JSF 2/PrimeFacesで正規表現を使用して、入力された値を有効な電子メールアドレスとして検証するにはどうすればよいですか?

31
NaaN

方法は次のとおりです。

自分で使用する...

<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" />

ダニエル。

45
Daniel

ここに私のバージョンがあり、それはうまく機能します:

<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />

そして、デモを作成しました こちら

10
mkyong

これは、メール内のユニコードドメイン名をサポートしています。

<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,})$)?" />
0
Tere Hommikust
<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" />
0
m_davari