-3

次のような RegExp コードが必要です: 3 文字または数字が並んでいます。

例:

  • aab有効です

  • aaa無効です

  • abc有効 です

  • aabbcc有効です

  • aabbbcc無効です(bbb)

  • aa22cc有効 です

  • aa222cc無効です(222)

  • xxxxxxxxxxx無効です

  • 111111111無効です

  • xx11xx11有効です

実物を確認するためにやってます

4

2 に答える 2

5

連続する同一文字が 2 つ以下であることを確認したい場合は、後方参照を使用できます

/(.)\1{2}/

この式は、それ自体のコピーが 2 つ続く任意の文字に一致します。したがって、3 文字の繰り返しがないことを確認するには、正規表現が一致しないことを確認します。

if(!preg_match('/(.)\1{2}/', $input)) {
    // "valid"
}
于 2013-01-18T11:16:07.140 に答える
0

あなたには2つの要件があります(そうです):

  1. 文字列に ASCII 数字と文字のみが含まれていることを確認してください。
  2. 連続する同一の文字が 2 つ以下であることを確認してください。

これはあなたがそれを行う方法です:

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で参照してください。

于 2013-01-18T11:30:00.573 に答える