プロが教える店舗&オフィスのセキュリティ対策術

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}の部分をあくまでもセット判定する方法があれば教えてください。
何卒よろしくお願い申し上げます。

A 回答 (2件)

該当箇所を括弧でくくってから、量指定子をつけてみて下さい。



https://ideone.com/2WChn
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/10/07 02:27

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!