为regexp添加总字符数限制

时间:2013-03-18 16:08:36

标签: javascript regex

我有以下正则表达式工作正常,但我需要添加一个超过字符数的限制所以它不能超过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个字符,但由于我不会进入的原因,我需要限制它。

3 个答案:

答案 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,但是可以更容易地考虑长度和格式以分离验证类型。希望有所帮助。干杯!