• ベストアンサー

正規表現で、半角大文字と半角数字,ハイフン許可

PHPを使った正規表現で困っています。 /^(\w|(?!-{2,})-)+$/ ・半角大文字(A~Z)、数字(0~9)とハイフン(-)のみ許可. ・先頭にハイフン(-)が利用できない. ・ハイフンは2回連続で利用できない.例) -- に対応したいと思っていますが、いろいろやってみましたが上記の方法で上手くいきません。

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

  • ベストアンサー
noname#244856
noname#244856
回答No.2

\w は [A-Za-z0-9_] と等価です。 もちろん今回は使えません。 提示されているものに、 ・末尾にハイフンが利用できない ・空文字は許可する という条件も加えさせていただきます。 不都合があれば補足お願いします。 今回用いる正規表現 /\A(?:[A-Z0-9]-?+(?!\z))*+[A-Z0-9]*+\z/ 動作確認サンプル http://ideone.com/evX3Ie 正規表現の書き方に関するポリシー(今回はバックスラッシュエスケープは省略しました) http://qiita.com/mpyw/items/8dd5378cb01c877e1f7b

okwave2006
質問者

お礼

加えていただいた条件も必要でした! やはり自分には複雑な正規表現のようでした。 とてもありがとうございます!

その他の回答 (2)

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

こんなんじゃない? <?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か後ろにハイフンのないハイフンで できた文字列

okwave2006
質問者

お礼

ありがとうございます!

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

([0-9A-Z]+-)+ みたいなやつ?

関連するQ&A