检测至少三个字母或数字正则表达式

时间:2013-01-18 11:11:17

标签: php regex validation

我需要一个如下的RegExp代码:3个字母或数字并排,不超过

的示例:

  • aab 有效

  • aaa 无效

  • abc 有效

  • aabbcc 有效

  • aabbbcc 无效(bbb)

  • aa22cc 有效

  • aa222cc 无效(222)

  • xxxxxxxxxxx 无效

  • 111111111 无效

  • xx11xx11 有效

我这样做是为了验证实际的

2 个答案:

答案 0 :(得分:5)

如果您想确保不超过两个连续的相同字符,可以使用backreference

/(.)\1{2}/

此表达式将匹配任何后跟两个自身副本的字符。所以,为了确保没有三个字符的重复,请检查正则表达式是否匹配:

if(!preg_match('/(.)\1{2}/', $input)) {
    // "valid"
}

答案 1 :(得分:0)

您有两个要求(似乎):

  1. 确保字符串仅包含ASCII数字和字母。
  2. 确保不超过两个连续相同的字母。
  3. 您就是这样做的:

    if (preg_match(
        '/^         # Start of string
        (?!         # Assert that it is not possible to match...
         .*         # any string,
         (.)        # followed by any character
         \1{2}      # which is repeated twice.
        )           # (End of lookahead)
        [a-z0-9]*   # Match a string that only contains ASCII letters and digits
        $           # until the end of the string.
        \Z/ix',     # case-insensitive, verbose regex
        $subject)) {
        # Successful match
        }
    

    regex101上查看。