0

每当连续写入 4 个字母字符时,都不应被允许。例如:

ABCD: error
ABC1: allowed
ABC1233...: allowed

一旦输入第 4 个字母字符,它就会出错。
我努力了:

(/^[a-zA-Z]{3,}.+$/.test(value))

在输入 abcd: 时会出错,但工作正常。
abc1:它再次显示错误。这个错误是不正确的。应该允许这个输入。

4

3 回答 3

1

如果我了解您,您希望有 3 个字母,然后其他所有字母都作为字母?

去那个正则表达式:

^[a-zA-Z]{3}[^a-zA-Z]+$

如果你只想要字母后面的数字,那就去吧:

^[a-zA-Z]{3}[0-9]+$
于 2013-05-24T06:01:46.460 回答
0

只需在字符串中搜索[a-zA-Z]{4,},如果有任何匹配项,则字符串中的一行中有四个字母数字字母,如果没有匹配项,则允许使用该字符串。

于 2013-05-24T05:54:46.957 回答
0

编辑
似乎您的要求如下:
您希望接受包含字母数字字符且不以 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*)简短演示

于 2013-05-24T05:57:47.900 回答