JavaScriptで全角数字を半角数字に変換する方法(おまけつき)

HTML5なんかだと、強制的に半角数字だけを入力させるようにできますが、それができない場合はJavaScriptを使って以下のように関数化して変換しちゃいましょう。

function zenNum2HanNum(num) {
var z = ["0","1","2","3","4","5","6","7","8","9"];
for(var i=0; i<10; i++) num = num.replace(new RegExp(z[i],"g"), i);
return num;
}

ポイントは「g」フラグで一気に置き換え

ポイントは、置き換え用のRegExp正規表現クラスをインスタンス化する際に「g」フラグで一気に置き換えるところですかね。

他のサイトの例ではwhile文を使って、一文字一致するたびにチェックさせる方法がありましたが、文字数が多い場合はかなり時間がかかってしまうのではないでしょうか。

gフラグの方法だとRegExpインスタンスを10個作成する手間はあるものの、一旦作成できれば一気に置き換えてくれるので良いかと思います。

おまけ:半角数字以外は除去する

このような、全角数字を半角数字に置き換えたいシチュエーションで、セットになって付いてくる悩みとしては「数字以外の余計な文字は除去したい」というものがありますね。

この問題を解決するには、以下のように数字以外の文字は全て空文字に置き換えるという正規表現で実現できます。 せっかくなので、上のzenNum2HanNum()関数を利用しましょう。

var num = "12345あいうえおabcABC";  //置き換え対象の文字列
num = zenNum2HanNum(num);  //これでnumには「12345あいうえおabcABC」が入ります
num = num.replace(new RegExp("[^0-9]", "g"), "");

これで半角数字だけが抽出されますので、電話番号のチェックに利用したり、郵便番号のチェックに利用したりできるようになります。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。

2011-08-04