PHP の正規表現 preg_match() を使用して、中間にハイフンが含まれる場合がある文字列と一致させようとしています。英数字のパターンは一貫しています。3 文字の後に 3 つの数字と 1 文字 (オプション) の最後の文字が続きます。例:
RTE234
RTE-234
OR
DGF123R
DGF-123R
私のデータベースはダッシュなしで文字列を保存しますが、文字列のデータソースにはダッシュが含まれることがあります。したがって、以前は機能していた私のパターン:
preg_match_all("/\b\(?([a-z0-9-]+)\)?\b/i", $subject, $matches);
調整する必要がありますが、オプションのハイフンを許可するマルチブラケット文字列を形成する方法が正確にはわかりません. 私の最初の試み...
preg_match_all("/\b([a-z]{3}[-]?[a-z0-9-]+)\b/i", $subject, $matches);
ご覧のとおり、最初の 3 文字 [az]{3} について詳しく説明できますが、オプションのダッシュ構文については不明です [-]?
助言がありますか?