正規表現を使用して、大文字と小文字を無視して、文字列に 8 桁の英数字を含む単語があるかどうかを確認したかった (つまり、2HJS1289 と 2hjs1289 が一致する必要がある)。私は preg を使用してこれを行うことができることを知っています。これまでのところ、これがあります。
preg_match('/[A-Za-z0-9]/i', $string)
ただし、8桁/文字スキームのみに制限する方法についてはわかりません。
正確に 8 文字の単語の場合、単語境界を使用する必要があります。\b
preg_match('/\b[A-Z\d]{8}\b/i', $string)
試す
preg_match('/\b([A-Z0-9]{8})\b/i', $string)
{8} は正確に 8 回一致します。実際の一致を抽出する必要がある場合に備えて、キャプチャ グループ (括弧) を追加しました。
{min,max} を使用して、最小時間と最大時間の間で繰り返されるパターンに一致させることもできます (包括的だと思います)。または、パラメータの 1 つを省略して、自由に設定することもできます。例: {min,} は少なくとも min 回に一致します
[a-zA-Z0-9] - 大文字または小文字または数字に一致します
{8} - 前のトークンの 8 に一致するように指定します
一緒に置く:
preg_match('/([A-Za-z0-9]{8})/i', $string)