- ベストアンサー
正規表現で、半角大文字と半角数字,ハイフン許可
PHPを使った正規表現で困っています。 /^(\w|(?!-{2,})-)+$/ ・半角大文字(A~Z)、数字(0~9)とハイフン(-)のみ許可. ・先頭にハイフン(-)が利用できない. ・ハイフンは2回連続で利用できない.例) -- に対応したいと思っていますが、いろいろやってみましたが上記の方法で上手くいきません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
\w は [A-Za-z0-9_] と等価です。 もちろん今回は使えません。 提示されているものに、 ・末尾にハイフンが利用できない ・空文字は許可する という条件も加えさせていただきます。 不都合があれば補足お願いします。 今回用いる正規表現 /\A(?:[A-Z0-9]-?+(?!\z))*+[A-Z0-9]*+\z/ 動作確認サンプル http://ideone.com/evX3Ie 正規表現の書き方に関するポリシー(今回はバックスラッシュエスケープは省略しました) http://qiita.com/mpyw/items/8dd5378cb01c877e1f7b
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
こんなんじゃない? <?PHP $pattern="/^[A-Z0-9]([A-Z0-9]|-(?!-))*$/"; $array=array("aBC","","A","ABC","-ABC","A-BC","A-B-C","A--BC"); foreach($array as $val){ print $val.":"; print preg_match($pattern,$val)?"ok":"ng"; print "<br>\n"; } ?> A-Zもしくは0-9ではじまり、0回以上のA-Z0-9か後ろにハイフンのないハイフンで できた文字列
お礼
ありがとうございます!
- Tacosan
- ベストアンサー率23% (3656/15482)
([0-9A-Z]+-)+ みたいなやつ?
お礼
加えていただいた条件も必要でした! やはり自分には複雑な正規表現のようでした。 とてもありがとうございます!