8

複数のコンマ区切りの電子メールを入力として受け取り、HTML5 を使用して検証する電子メール フォームを作成しようとしています。入力のサニティチェックに次の正規表現を使用したい:

\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b

これが私が試したことです

これは複数では機能しないようです:

<input type="email" pattern="\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b" value="" multiple>

これは機能しますが、組み込みの電子メール検証のみを行います。これは.+@.+.

<input type="email" value="" multiple>

正規表現がコンマ区切りリストの各項目をチェックするように、パターンと複数を混在させる方法はありますか?

ここにデモがあります: http://codepen.io/ben336/pen/ihjKA

4

3 に答える 3

11

これを試して:

<input type="email" multiple pattern="^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$" value="">

アップデート:

"a@b" を渡すことでバグが発生する<input type="email" value="" multiple>ようです。あなたが言ったようにセマンティクスを維持するためにこの方法を使用しますが、誰かが「a@b」のようなメールを送信しようとした場合に備えて、サーバー側でも検証を使用するだけです。

注意として、クライアント側の検証は非常に簡単にバイパスされる可能性があるため、セキュリティ上の理由から、常にサーバー側で検証する必要があります。

于 2013-10-07T17:47:24.670 に答える
4

正規表現がコンマ区切りリストの各項目をチェックするように、パターンと複数を混在させる方法はありますか?

はい。要素に一致する正規表現が の場合foo

^(?:foo(?:,(?!$)|$))*$

のコンマ区切りリストに一致しますfoo

セパレーターは(?:,(?!$)|$)、入力を終了しない必須のコンマまたは入力の終了のいずれかに一致するものです。

fooそのセパレーターはひどく醜いですが、セパレーターの接尾辞が本文の必須の空でない接頭辞でない限り、「」の重複を避けることができます。

于 2013-10-07T17:55:29.523 に答える