1

私は正常に動作する次の正規表現を持っていますが、文字数にすべての制限を追加する必要があるため、50文字を超えることはできません

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

何か案は?{1,50} をさまざまな場所に追加しようとしましたが、うまくいきませんでした!

電子メール アドレスが 50 文字を超える可能性があることはわかっていますが、ここでは説明しませんが、制限する必要があります。

4

3 に答える 3

1

すでに非常に複雑に見えるため、これを正規表現に追加しないでください。むしろ、合格/不合格の基準に必要なものを評価して返す前に、文字列の長さをキャプチャすることを検討する必要があります。

var inp = document.getElementById('myinput');
inp.onkeyup = function() {
  alert(inp.value.length);
}​

または、HTML の入力フィールドの長さを単純に制限することもできます。

<input type="text" id="Textbox" name="Textbox" maxlength="50" />
于 2013-03-18T16:12:10.007 に答える
0

文字列が 50 文字未満かどうかを知る必要がある場合はlength、正規表現を実行する前にそのプロパティを確認できます。このようなものが動作するはずです:

if ( emailString.length <= 50 ) {
    // The string is an acceptable length, apply regexp check
} else {
    // The string is too long, no need to check via regexp
}

もちろん、正規表現に長さの制約を追加することもできますが、長さと形式を別々のタイプの検証として考える方が簡単かもしれません。それが役立つことを願っています。乾杯!

于 2013-03-18T16:14:16.897 に答える
0

正規表現の本文を非キャプチャ グループでラップし、そこに 50 文字の制限を設定できます。

^(?:([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)){1, 50}$
于 2013-03-18T16:11:58.677 に答える