正規表現 -ハイフン 判定

メールアドレスのチェックを正規表現で行っていたが、ハイフンが入らない。

ソースを見ても、ハイフンちゃんと入っているのに・・

[a-zA-Z0-9\._-¥+]

エスケープしたら、許可されるようになった。

[a-zA-Z0-9\._\-¥+]

でも、違う場所で
[a-zA-Z0-9_-]
と判定している時は、ハイフンがちゃんと許可される?

なんで? 納得いかん。。。

グーグル先生にきいてみる。

なんと!!!
正規表現で[ ]を利用した時のハイフンは、
最初か、最後におかないといけないらしい。

たしかに、0-9とかでハイフン使うし・・

ということで、
[a-zA-Z0-9\._¥+-]
これでOK!
納得!スッキリ!

参考ありがとう:http://www.4web8.com/3195.html