• ベストアンサー

正規表現で分からないことがあります。

正規表現で数字の間に「,」が入る場合と入らない場合があるのですが、どう書けばいいのでしょうか? 例えば、 1 1,2 0,1 122 等様々なパターンがある時、これらをヒットさせるにはどうすればいいのでしょうか? \d+だけだと、コンマのところでバラバラになってしまいます。 一回で全てをマッチさせる方法はありますか? 使用しているのはPHPです、よろしくお願いします。

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

  • ベストアンサー
回答No.1

1, を許さないなら \d+(,\d+) でどうでしょう? 1, を許すなら \d+,?\d* かな

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

一番簡単なのはorで処理すること $pattern="/^(\d+|\d+,\d+)$/"; それじゃあんまりだと思うなら\dから始まって,\dが0か1回ヒットして終わるもの $pattern="/^\d+(,\d+){0,1}$/"; 総じてこんな感じ <?PHP /* 先頭や後尾にカンマがあるのはNG、カンマが2つ以上あるのもNG 数字以外もNG */ $array=array("1","1,2","0,1","122",",11","22,","1,2,3","a"); $pattern="/^\d+(,\d+){0,1}$/"; foreach($array as $val){ if(preg_match($pattern,$val)) print "match:".$val."<br>"; } ?>

関連するQ&A