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"), "");
これで半角数字だけが抽出されますので、電話番号のチェックに利用したり、郵便番号のチェックに利用したりできるようになります。
regexp
¥200 (2025-04-17 00:06 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)ミヨシ MCO テンキー ワイヤレス Bluetooth接続 5列 27キー Windows Mac iPadOS対応 3台まで接続できる マルチペアリング機能搭載 関数入力に便利な「=」「(」「)」「,」「半角/全角キー」 ノートパソコンと同じ浅く軽いタッチで入力 軽量 薄型設計 ブラック ZTENBT02/BK
¥4,158 (2025-04-17 19:14 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)Windows、Mac、iPadOSにも対応。ノートパソコンと同じ感覚で打てる、表計算ソフトに最適なテンキーパッド Windows/macOS/iPadOSそれぞれ専用のファームウェアを搭載。 3台までの機器を登録できるマルチペアリング対応。 1列多い27キー配列採用。Excelなどの、表計算ソフトを快適に操作できるテンキーです。 当社従来機よりも数字サイズを約50%大きくし、数字が見やすい大型表示。
表札 ステンレス 切り文字 明朝体 厚さ2mm サイズ30mm アルファベット 数字
¥1,030 (2025-04-16 10:58 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)表札やドアサインに高級感を加えたい方に最適な、ステンレス製の切り文字です。アルファベット、数字、記号を組み合わせて自由にカスタマイズができます。 屋内案内表示に最適な高視認性を誇るステンレスはどんな素材とも相性が良く、空間に馴染みながらも洗練された印象を与えてくれます。 切り文字は5種類のサイズと3種類の板厚から選べ、お店やオフィス、自宅の表札やエントランスにピッタリなサイズで合わせることが可能。 ファイバーレーザーによる滑らかな切断面の仕上がりと、熟練の加工技術と鉄職人による匠の技で全周バリ・... もっと読む
2011-08-04