19

編集:私の質問をより明確にするためのアドバイスをありがとう:)

Match3 つの連続した文字を探しています:

Regex Match =AAA555 653219
Regex Match = AA_6219

コードは ASP.NET 4.0 です。関数全体は次のとおりです。

public ValidationResult ApplyValidationRules()
{
    ValidationResult result = new ValidationResult();
    Regex regEx = new Regex(@"^(?=.*\d)(?=.*[a-zA-Z]).{8,20}$");

    bool valid = regEx.IsMatch(_Password);
    if (!valid)
        result.Errors.Add("Passwords must be 8-20 characters in length, contain at least one alpha character and one numeric character");

    return result;
}

私はこれを機能させるために3時間以上試しましたが、以下を参照してもうまくいきません=/

Javaで正規表現を使用して繰り返される文字を見つけるにはどうすればよいですか?

2文字以上の連続する.net正規表現

私はこれを8〜20文字で始めましたa-Z 0-9

^(?=.*\d)(?=.*[a-zA-Z]).{8,20}$
As Regex regEx = new Regex(@"^(?=.*\d)(?=.*[a-zA-Z]).{8,20}$");

以下のバリエーションを追加しようとしましたが、うまくいきませんでした:

/(.)\1{9,}/
.*([0-9A-Za-z])\\1+.*
((\\w)\\2+)+". 

どんな助けでも大歓迎です!

4

2 に答える 2

41

http://regexr.com?34vo9

正規表現:

^(?=.{8,20}$)(([a-z0-9])\2?(?!\2))+$

最初の先読み ( (?=.{8,20}$)) は、文字列の長さをチェックします。2 番目の部分は、次の方法で二重文字と有効性をチェックします。

(
  ([a-z0-9])      Matching a character and storing it in a back reference.
  \2?             Optionally match one more EXACT COPY of that character.
  (?!\2)          Make sure the upcoming character is NOT the same character.
)+                Do this ad nauseum.
$                 End of string.

わかった。いくつかの追加要件を追加したようです。私の基本的なフォーラムは引き続き機能しますが、段階的なアプローチをさらに提供する必要があります。それで:

^...$

明らかな理由により、正規表現全体が開始文字と終了文字にドロップされます。

(?=.{n,m}$)

長さチェック。これを正規表現の先頭に置き、n を最小長、m を最大長として指定します。

(?=(?:[^REQ]*[REQ]){n,m})

必須文字。N から M の文字を要求するには、REQ を必要な文字として正規表現の先頭に配置します。(?: ..){n,m}その文字の 1 つだけが必要な場合は、 をドロップできます。

(?:([VALID])\1?(?!\1))+

あなたの表現の残りの部分。VALID を有効な文字に置き換えます。したがって、パスワードの正規表現は次のとおりです。

^(?=.{8,20}$)(?=[^A-Za-z]*[A-Za-z])(?=[^0-9]*[0-9])(?:([\w\d*?!:;])\1?(?!\1))+$

'けいれん:

^
  (?=.{8,20}$)                 8 to 20 characters
  (?=[^A-Za-z]*[A-Za-z])       At least one Alpha
  (?=[^0-9]*[0-9])             At least one Numeric
  (?:([\w\d*?!:;])\1?(?!\1))+  Valid Characters, not repeated thrice.
$

http://regexr.com?34vol これが新しいものです。

于 2013-05-23T15:21:15.077 に答える