4

これは私の正規表現です

^(([a-z0-9]+)\.([a-z0-9]+)){4,20}$|^(([a-z0-9]+)\_([a-z0-9]+)){4,20}$

単一のドットまたは単一の下線または下線とドットがない単語になります。また、この式は 4 から 20 文字の間で必要です (db のユーザー名になります)。

この正規表現

^(([a-z0-9]+)\.([a-z0-9]+))$

そしてこれ

^(([a-z0-9]+)\_([a-z0-9]+))$

正常に動作しますが、文字列の長さを制限する方法がわかりません

:( 助けてください

私はそれをzendフレームワークの正規表現バリデーターで使用するつもりです...

4

2 に答える 2

7
^(?=[^\._]+[\._]?[^\._]+$)[\w\.]{4,20}$

説明:

^            - Start of string
(?=          - Followed by (not part of match)
  [^\._]+    - Anything but . and _
  [\._]?     - Optional . or _
  $          - End of string
)
[\w\.]{4,20} - 4-20 letters, digits, _ and .
$            - End of string

は、文字列に含まれるのが1または。以下(?=[^\._]+[\._]?[^\._]+$)であることを保証します。残りは文字列と一致します。._

于 2012-05-17T21:19:37.333 に答える
2

コードの可読性が向上するため、正規表現ではなく、2 番目のバリデーターで長さを検証する必要があります。Regexバリデーターで^[a-z0-9]+[._][a-z0-9]+$正規表現として使用し、 StringLengthバリデーターを使用して長さを確認します。

于 2012-05-17T21:24:59.263 に答える