文字列が次の形式であるかどうかを確認する必要があります: xxx[yz]
ここで、y と z は 2 つの数値です。たとえば、y が 1000 で z が 2000 の場合、これらは有効になります。
xxx1000 xxx1500 xxx1900 xxx2000
正規表現でこれを達成する方法はありますか?
y
特にとz
が変数の場合、ここで正規表現を使用する意味がわかりません。正規表現を使用して形式をテストしますが、右端の n 文字を取得し (グループでキャプチャするのが最も簡単です)、整数に解析して、範囲内にあるかどうかをテストします。
y
とが一定の場合z
は、必ず先に進んでください。
xxx(2000|1[0-9]{3})$
この種の評価は、あなたがそれを助けることができれば、実際には正規表現に含まれるべきではありません。正規表現を使用してフォーマットでテストを実行できますが、他の関数を使用してコンテンツをテストできます。
$in = "xxx1234";
if( preg_match("/^xxx(\d{4})$/",$in,$m) && $m[1] >= 1000 && $m[1] <= 2000) {
// ok!
}