全角文字やよく似た文字を正規化する

JavaScript でアプリを作るとき、入力文字の正規化を行って利用者の負担を減らそう。

全角文字

UnicodeHalfwidth and Fullwidth Forms Block のうち、ASCII コードと対応している 94 の文字を置換する。

str.replace(/[!-〜]/g, function(s) {
    return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
});

ハイフンと似た文字

Unicodeのハイフンっぽい文字いろいろより。

str.replace(/[\u2212\uff0d\u30fc\u2012\u2013\u2014\u2015\u2500]/g, "-");

空白文字

Unicode 空白文字等調査より。タブ、改行は除いてある。

str.replace(/[\u200B\u200C\u200D\uFEFF\u2028\u2029\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000]/g, " ");