只要连续出现4个字母字符,就可以过滤正则表达式

时间:2013-05-24 05:52:26

标签: javascript regex

每当连续写入4个字母字符时,就不允许这样做。 例如:

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

一旦键入第4个字母字符,就应该给出错误 我试过了:

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

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

3 个答案:

答案 0 :(得分:1)

如果我理解你,你想要3个字母,然后其他所有字母作为字母?

去那个正则表达式:

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

如果您只想在信件后面输入数字,请执行以下操作:

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

答案 1 :(得分:0)

只需搜索字符串[a-zA-Z]{4,},如果完全匹配则字符串中的行中有四个字母数字字母,如果没有匹配则允许该字符串。

答案 2 :(得分: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"));
}


另请参阅此(*更新*) short demo