• ベストアンサー

正規表現での英字+ハイフンのセット部分一致判定方法

PHP5の正規表現で「999-999」形式か「999-A-999」形式のみ 入力可能としたいです。 ※「9」…数値、「-」…ハイフン if (!preg_match("/^[0-9]{3}-[A-Z]{0,1}[-]{0,1}[0-9]{3}$/", $abc)) { … とすると 「A-」の部分がセットになっていないため 「999-A999」も入力可となってしまいます。 OR判定でIF文を追加する方法ももちろんありますが、 [A-Z]{0,1}[-]{0,1}の部分をあくまでもセット判定する方法があれば教えてください。 何卒よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.2

該当箇所を括弧でくくってから、量指定子をつけてみて下さい。 https://ideone.com/2WChn

rantomudaisuki
質問者

お礼

"/^[0-9]{3}-([A-Z][-]){0,1}[0-9]{3}$/"で出来ました! ありがとうございました!

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

グルーピングすればいいんじゃね?

関連するQ&A