1

私は正規表現が初めてで、一致するコード行を記述しようとしました

  1. 文字列は数字で始めるべきではありません。( わかった )
  2. 文字列には、アルファ、数字、ダッシュ、およびアンダースコアのみを含める必要があります。( わかった )
  3. 文字列の長さは 5 から 25 の間でなければなりません ( FAIL )

ルール 1 と 2 は正しく機能しますが、ルール 3 は機能しません。

それを修正するための助けはありますか?

これは私のコードです:

$arr = [
    '-foobar',
    'foobar',
    '32-xx',
    'xx23',
    'A2l',
    '2aAA',
    '_a2d',
    '-A22',
    '-34x',
    '2--a',
    'a--a-'

];

foreach( $arr as $a ){
    echo check( $a );
}

function check($string){
    if (preg_match("/^[a-zA-Z]+([a-zA-Z0-9_-]?){5,25}$/", $string)) {
        return "$string ---------------> match was found.<br />";
    } else {
        return "$string ---------------> match was not found.<br />";
    }

}
4

1 に答える 1

5

+最初の文字クラスに量指定子は必要ありません。それは最初の桁をチェックすることになっています。その後?、2番目の文字クラスに数量詞は必要ありません。また、範囲は{4,24}の代わりにする必要があり{3,25}ます。また、そこから不要なキャプチャ グループを削除することもできます。

したがって、正規表現を次のように変更します。

/^[a-zA-Z][a-zA-Z0-9_-]{4,24}$/
于 2013-10-28T17:59:51.027 に答える