需要一个Regex来验证长度为6到25个字符的字母数字

时间:2011-09-12 11:11:16

标签: javascript regex jquery-validate validation alphanumeric

我为密码feild的表单验证创建了这个正则表达式

"/^[[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*]{3,25}$/",

它接受所有字母数字字符和特殊字符但仅限特殊字符是不可接受的。

问题在于长度检查:(

应该如下

Valid: aaaaaaaaa 
Valid: 111111111
Valid: 11111n11111
Valid: nnnn1jkhuig
InValid: @@@@@@@@

但它在

上抛出错误
aaaaaaaaaaaa

以及

4 个答案:

答案 0 :(得分:4)

^(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{6,25}$

Tested with PHP)。解释:

  • 字符串应与[A-Za-z0-9, .!@#$%^&*()_]匹配6到25个字符
  • 字符串[A-Za-z0-9]中的某处必须存在(确保字符串不是由特殊字符组成)。

答案 1 :(得分:2)

您可以使用零宽度正断言来解决此问题。这是正则表达式,我将在下面解构它。

/(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{3,25}/

第一个组件是(?=.*[A-Za-z0-9])。构造(?=...)是零宽度断言,意味着它会检查某些内容,但不会“吃掉”任何输出。如果“...”部分匹配,则断言通过并继续正则表达式。如果它不匹配,则断言失败,并且正则表达式返回不匹配。在这种情况下,我们的“......”是“。* [A-Za-z0-9]”,它只是说“检查那里某处存在的字母数字字符,我们不知道”关心“。

下一个组件是[A-Za-z0-9, .!@#$%^&*()_]{3,25},只是说要匹配任何有效的3到25个字符。我们已经知道,至少其中一个是字母数字,因为我们的前瞻性断言,所以这已经足够了。

答案 2 :(得分:1)

你不能嵌套角色类,但我认为你的意思是

/^([A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*){3,25}$/

但这也行不通,因为量词{3,25}也不能嵌套。

试试这个

^(?=.{3,25})[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*$

(?=.{3,25})是一个可以确保您的长度要求的先行者。

答案 3 :(得分:0)

我认为你的正则表达式有点奇怪,你在一个集合中包含一个集合。

应该用/^([A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*){3,25}$/括号来定义数字。