每当连续写入 4 个字母字符时,都不应被允许。例如:
ABCD: error
ABC1: allowed
ABC1233...: allowed
一旦输入第 4 个字母字符,它就会出错。
我努力了:
(/^[a-zA-Z]{3,}.+$/.test(value))
在输入 abcd: 时会出错,但工作正常。
abc1:它再次显示错误。这个错误是不正确的。应该允许这个输入。
每当连续写入 4 个字母字符时,都不应被允许。例如:
ABCD: error
ABC1: allowed
ABC1233...: allowed
一旦输入第 4 个字母字符,它就会出错。
我努力了:
(/^[a-zA-Z]{3,}.+$/.test(value))
在输入 abcd: 时会出错,但工作正常。
abc1:它再次显示错误。这个错误是不正确的。应该允许这个输入。
如果我了解您,您希望有 3 个字母,然后其他所有字母都作为字母?
去那个正则表达式:
^[a-zA-Z]{3}[^a-zA-Z]+$
如果你只想要字母后面的数字,那就去吧:
^[a-zA-Z]{3}[0-9]+$
只需在字符串中搜索[a-zA-Z]{4,}
,如果有任何匹配项,则字符串中的一行中有四个字母数字字母,如果没有匹配项,则允许使用该字符串。
编辑
似乎您的要求如下:
您希望接受仅包含字母数字字符且不以 4 个或更多连续字母开头且不为空的字符串。
在这种情况下,您的正则表达式应如下所示:
/^(\\d|[a-zA-Z]{1,3}(\\d|$))/
v \_/ \___________/\_____/
| | | |
___| | | |
_______|_ _|___ _|_____ _|____________
|match the| |match| |match | |match either |
|beginning| |one | |1 to 3 | |a digit or the|
|of string| |digit| |letters| |end of srtring|
--------- ----- ------- --------------
这可以解释为:
Match the beginning of the string
followed by:
either: one digit
or : one to three letters
followed by:
either: one digit
or : the end of the string
示例代码:
var strArr = ["ABC", "ABCD", "ABC123DEFG", "ABCD1234"];
var regex = new RegExp("^(\\d|[a-zA-Z]{1,3}(\\d|$))");
for (var i = 0; i < strArr.length; i++) {
alert(strArr[i] + ": " + (regex.test(strArr[i]) ? "ALLOWED" : " NOT ALLOWED"));
}
另请参阅此 (*UPDATED*)简短演示。