Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将总字符限制添加到regexp_Javascript_Regex - Fatal编程技术网

Javascript 将总字符限制添加到regexp

Javascript 将总字符限制添加到regexp,javascript,regex,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个字符,但出于我不想说的原因,我需要限制它。您可以将正则表达式的

我有下面的正则表达式,它工作得很好,但是我需要对字符数增加一个全面的限制,这样它的长度就不能超过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个字符的限制放在该组中:

^(?:([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}$

您可能不应该将其添加到正则表达式中,因为它似乎已经相当复杂了。相反,在评估和返回通过/失败标准所需的任何内容之前,您可能应该考虑捕获字符串长度

var inp = document.getElementById('myinput');
inp.onkeyup = function() {
  alert(inp.value.length);
}​
另外,您可以简单地限制HTML中的输入字段长度

<input type="text" id="Textbox" name="Textbox" maxlength="50" />

您可能不应该将其添加到正则表达式中,因为它似乎已经相当复杂了。相反,在评估和返回通过/失败标准所需的任何内容之前,您可能应该考虑捕获字符串长度

var inp = document.getElementById('myinput');
inp.onkeyup = function() {
  alert(inp.value.length);
}​
另外,您可以简单地限制HTML中的输入字段长度

<input type="text" id="Textbox" name="Textbox" maxlength="50" />

如果需要知道字符串是否少于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
}

if(emailString.length如果需要知道字符串是否少于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
}

if(emailString.length为什么不在执行正则表达式验证后执行长度检查?为什么不在执行正则表达式验证后执行长度检查?谢谢…我真的应该停止让事情复杂化!@Tom我也倾向于这样做:).有时候退一步想清楚为什么这么难是件好事。很高兴它起到了作用!谢谢……我真的应该停止把事情复杂化!@Tom我也倾向于这么做:)。有时候退一步想想为什么这么难是件好事。很高兴它有帮助!