JavaScriptで全角数字を半角数字に変換する方法(おまけつき)
presented by 役に立つかもしれないBlog
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"), "");
これで半角数字だけが抽出されますので、電話番号のチェックに利用したり、郵便番号のチェックに利用したりできるようになります。
このページに関連のある記事はこちら
- SeleniumでjQueryを利用する
- JavaScriptでDATETIME型の日付を得る方法
- Office2007ファイル(docx,xlsx,pptx)のMIME-Typeを正しく判定する方法
- tableにjQueryのtoggleを使うと幅が100%に広がらない件
- JavaScript+Prototype.jsで右クリックメニューが作れる「Proto.Menu」
- PHPで文章中の単語リストを置換するいろいろな方法
- rmと正規表現で特定のディレクトリ以外を削除する方法
- jQueryでbit.lyと連携。短縮URLをTwitterに投稿してもらう方法
- JavaScriptで日付から「第○曜日」(何番目の曜日か)を調べる方法
- mod_rewriteのRewriteRuleで普通に環境変数が使えるよ



コメントフォーム