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 个字符的限制放在那里:

^(?:([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 回答
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 回答