あなたが最初の正規表現にあなたは第二のパターンとそれらを使用したのと同じ方法でアンカーを追加する必要がある、とあなたは第二のパターン(例えば、0〜20)で制限数量詞の下限を定義する必要があります。
を
$studentID = "1234567";
if (preg_match('/^[0-9]{7,10}$/', $studentID)) {
echo "$studentID matched!\n";
}
$familyname = "Pupkin";
if (preg_match ('/^[A-Z -]{0,20}$/i', $familyname)) {
echo "$familyname matched!";
}
はパターンが他の消費サブパターン(定量化されたサブパターンのためのバックトラックを無効にするので、必要はありません)と続いていないので{0,20}
とその所有{0,20}+
版はこちら同じように動作することをPHP demo
注を参照してください。
また、'/^[A-Z -]{0,20}$/i'
は、姓のための非常に一般的なサブパターンです。さらに正確にすることをお勧めします。たとえば、すべてのスペースや---------
などの文字列を許可しない場合は、'/^(?=.{0,20}$)[A-Z]+(?:[ -][A-Z]+)*$/i'
を使用してください。
'/ i'を使用した' a-zA-Z'は冗長です。 '); –
' a-zA-Z'は冗長です。 '/ i'は正規表現の大文字と小文字を区別しませんので、大文字と小文字のバージョンを提供するのは無意味です。 '{、20} +'もあまり意味がありません。 –