Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
209
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@ryounagaoka

ハイフンに似てる文字の文字コード

日本語環境ではハイフンっぽく見える文字が何種類も有ります。
そのせいで、住所入力欄などでハイフン(っぽい文字)でバリデーションにひっかかってイライラするということが多々有ります。
一般のユーザーがハイフンっぽい文字の違いを理解しているはずもないので、ハイフン系文字の内、特定の1つだけを許容するようなバリデーションルールを設定してしまうと、ユーザビリティを低下させてユーザの離脱を招きます。
ハイフンっぽいものは全部入力できるようにして、サーバサイドで統一的な文字に置換するほうが良いでしょう。

というわけで、日本語環境で入力できるハイフンをまとめてみました。

文字 UTF-8 Unicode 説明
- 2D U+002D ASCIIのハイフン
E383BC U+30FC 全角の長音
E28090 U+2010 別のハイフン
E28091 U+2011 改行しないハイフン
E28093 U+2013 ENダッシュ
E28094 U+2014 EMダッシュ
E28095 U+2015 全角のダッシュ
E28892 U+2212 全角のマイナス
EFBDB0 U+FF70 半角カナの長音

日本語IMEから入力可能なものはこれくらいでしょうか。

例えば、PHPでこれら全てにマッチする正規表現を書くと以下のようになります。

$regex = '/[\x{30FC}\x{2010}-\x{2015}\x{2212}\x{FF70}-]/u';

実はまだまだたくさんハイフンに似た文字は有ります。
下記記事を参考に状況に応じて実装して下さい。

参考

謝辞

  • hnwさんに他にもたくさんのハイフンっぽい文字があることを教えて頂きました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
209
Help us understand the problem. What is going on with this article?