3

私はこれを解決するために何時間も費やしました。

これが私の正規表現文字列です:
^(?=.{4})(?!.{32})[a-zA-Z0-9_]+((\.(-\.)*-?|-(\.-)*\.?) [a-zA-Z0-9_]+)*$-ここで
テストできます

これが私が達成しようとしたものです(ユーザー名の検証):

  1. 文字列の長さの範囲 -> OK
  2. 文字、数字、_ - . 許可 (- および . ユーザー名の先頭または末尾では許可されない) -> OK
  3. 文字の重複を防ぐ必要がある (1 行に 5 文字以上) ->助けが必要!
4

2 に答える 2

3

これ:

^(?=.{4})(?!.{32})(?!.*(.)\1{4})\w[\w.-]+\w$

別の(負の)先読みを使用して、3番目の状態を処理します。これはキャラクターがいないことを確認し、その後に4回続きます。

\wまた、を表すを使用して文字クラスを簡略化しました[a-zA-Z0-9]。また、FJが指摘したように、最初の2つの先読みを1つにまとめることができます。

^(?=.{4,31}$)(?!.*(.)\1{4})\w[\w.-]+\w$
于 2012-10-15T18:19:04.127 に答える
0

次のことを試してください。

^(?=.{4,31}$)(?![-.])(?:(?!(.)\1{4})[-.\w])+(?<![-.])$

例: http: //regexr.com?32ffq

これは、許可するのではなく、実際に文字の繰り返しを防ぐことを意味していることを前提としています。

于 2012-10-15T18:18:39.327 に答える