- ベストアンサー
正規表現で分からないことがあります。
正規表現で数字の間に「,」が入る場合と入らない場合があるのですが、どう書けばいいのでしょうか? 例えば、 1 1,2 0,1 122 等様々なパターンがある時、これらをヒットさせるにはどうすればいいのでしょうか? \d+だけだと、コンマのところでバラバラになってしまいます。 一回で全てをマッチさせる方法はありますか? 使用しているのはPHPです、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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>"; } ?>