我有以下工作正常的正则表达式,但我需要对字符数添加一个全面限制,使其长度不能超过 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 个字符,但由于我不会进入的原因,我需要限制它。
我有以下工作正常的正则表达式,但我需要对字符数添加一个全面限制,使其长度不能超过 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 个字符,但由于我不会进入的原因,我需要限制它。
您可能不应该将它添加到您的正则表达式中,因为它似乎已经很复杂了。相反,也许您应该考虑在评估和返回您的通过/失败标准所需的任何内容之前捕获字符串长度。
var inp = document.getElementById('myinput');
inp.onkeyup = function() {
alert(inp.value.length);
}
或者,您可以简单地限制 HTML 中的输入字段长度
<input type="text" id="Textbox" name="Textbox" maxlength="50" />
您可以将正则表达式的主体包装在一个非捕获组中,并将 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 个字符,您可以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
}
当然,您也可以将长度约束添加到正则表达式,但将长度和格式视为单独的验证类型可能更容易。希望有帮助。干杯!