我有以下正则表达式工作正常,但我需要添加一个超过字符数的限制所以它不能超过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个字符,但由于我不会进入的原因,我需要限制它。
答案 0 :(得分:1)
您可能不应该将此添加到正则表达式中,因为它似乎已经非常复杂了。相反,也许您应该考虑在评估和返回通过/未通过标准所需的任何内容之前捕获字符串长度。
var inp = document.getElementById('myinput');
inp.onkeyup = function() {
alert(inp.value.length);
}
Alernatively,你可以简单地限制HTML中的输入字段长度
<input type="text" id="Textbox" name="Textbox" maxlength="50" />
答案 1 :(得分: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}$
答案 2 :(得分:0)
如果您需要知道字符串是否少于50个字符,可以在执行regexp之前检查它的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
}
当然,您也可以将长度约束添加到regexp,但是可以更容易地考虑长度和格式以分离验证类型。希望有所帮助。干杯!