【问题标题】:need a Regex for validating alphanumeric with length 6 to 25 characters需要一个正则表达式来验证长度为 6 到 25 个字符的字母数字
【发布时间】:2011-11-15 06:17:18
【问题描述】:

我已经为密码字段的表单验证创建了这个正则表达式

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

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

问题在于长度检查:(

应该是这样的

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

但它在

上抛出错误
aaaaaaaaaaaa

还有

【问题讨论】:

    标签: javascript regex jquery-validate validation alphanumeric


    【解决方案1】:

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

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

    【讨论】:

    • 其实我的有点缺陷,它不会检查最大尺寸,你需要使用stema解决方案或者检查之前或之后的尺寸长度。跨度>
    【解决方案2】:

    你不能嵌套字符类,但我认为你的意思是

    /^([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】:
      ^(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{6,25}$
      

      (Tested with PHP)。解释:

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

      【讨论】:

      • +1 这比我的解决方案好一点(恭喜获得 10k)。
      【解决方案4】:

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

      /(?=.*[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 个字符。我们已经知道其中至少有一个是字母数字的,因为我们的肯定前瞻断言,所以这已经足够了。

      【讨论】:

      • 但是字符串“@abc,ali”对你在这里制作的正则表达式有效吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2016-09-29
      相关资源
      最近更新 更多