0

I want to validate just the beginning of an email address. I will force the user to use my '@company.com' domain, so it is not important to use that. This is the regular expression I'm using:

var validateEmail = /^[A-Z0-9._%+-]$/

And I'm testing it with an alert.

alert(validateEmail.test([$(this).attr('value')]));

The value pulled via jQuery is the user input. Everything I test alerts as false. Does anyone see why? From what I understand, this should mean: beginning of line, character set for alpha-numeric plus the . _ % + - symbols, then end of line. What am I doing wrong? Even just an 'a' alerts as false.

4

3 に答える 3

2

正規表現は単一の文字にのみ一致します。最小長と最大長を指定するには、+ 記号または {min, max} を追加する必要があります。

var validateEmail = /^[A-Z0-9._%+-]+$/;
于 2012-09-10T17:04:15.697 に答える
1

正規表現は、セットの 1 文字のみと一致します。セットの+少なくとも 1 文字と一致するように a を追加します。

var validateEmail = /^[A-Z0-9._%+-]+$/;

また、正規表現オブジェクトに小文字を含めることを怠っています。

var validateEmail = /^[A-Za-z0-9._%+-]+$/;

または、大文字と小文字を区別しないフラグを設定します。

var validateEmail = /^[A-Z0-9._%+-]+$/i;
于 2012-09-10T17:04:15.963 に答える
0

複数の問題があります。

  • a小文字であり、正規表現では大文字と小文字が区別されるため、失敗します。このオプションを使用して、i大文字と小文字を無視できます。
  • 正規表現では1文字しか使用できないため、他のほとんどの有効な電子メールアドレスは失敗します。+after文字クラスを使用[...]して、1つ以上の文字を許可するか*、0以上を許可することができます。

var validateEmail = /^[A-Z0-9._%+-]+$/i;

于 2012-09-10T17:06:36.373 に答える