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

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

JavaScriptで電話番号をハイフン区切りに

More than 1 year has passed since last update.
//JavaScriptで電話番号をハイフン区切りに
function format_phone_number(input) {
  var groups = [];

  groups[5] = {
            '01564' : 1,
            '01558' : 1,
            '01586' : 1,
            '01587' : 1,
            '01634' : 1,
            '01632' : 1,
            '01547' : 1,
            '05769' : 1,
            '04992' : 1,
            '04994' : 1,
            '01456' : 1,
            '01457' : 1,
            '01466' : 1,
            '01635' : 1,
            '09496' : 1,
            '08477' : 1,
            '08512' : 1,
            '08396' : 1,
            '08388' : 1,
            '08387' : 1,
            '08514' : 1,
            '07468' : 1,
            '01655' : 1,
            '01648' : 1,
            '01656' : 1,
            '01658' : 1,
            '05979' : 1,
            '04996' : 1,
            '01654' : 1,
            '01372' : 1,
            '01374' : 1,
            '09969' : 1,
            '09802' : 1,
            '09912' : 1,
            '09913' : 1,
            '01398' : 1,
            '01377' : 1,
            '01267' : 1,
            '04998' : 1,
            '01397' : 1,
            '01392' : 1,
  };
  groups[4] = {
            '0768' : 2,
            '0770' : 2,
            '0772' : 2,
            '0774' : 2,
            '0773' : 2,
            '0767' : 2,
            '0771' : 2,
            '0765' : 2,
            '0748' : 2,
            '0747' : 2,
            '0746' : 2,
            '0826' : 2,
            '0749' : 2,
            '0776' : 2,
            '0763' : 2,
            '0761' : 2,
            '0766' : 2,
            '0778' : 2,
            '0824' : 2,
            '0797' : 2,
            '0796' : 2,
            '0555' : 2,
            '0823' : 2,
            '0798' : 2,
            '0554' : 2,
            '0820' : 2,
            '0795' : 2,
            '0556' : 2,
            '0791' : 2,
            '0790' : 2,
            '0779' : 2,
            '0558' : 2,
            '0745' : 2,
            '0794' : 2,
            '0557' : 2,
            '0799' : 2,
            '0738' : 2,
            '0567' : 2,
            '0568' : 2,
            '0585' : 2,
            '0586' : 2,
            '0566' : 2,
            '0564' : 2,
            '0565' : 2,
            '0587' : 2,
            '0584' : 2,
            '0581' : 2,
            '0572' : 2,
            '0574' : 2,
            '0573' : 2,
            '0575' : 2,
            '0576' : 2,
            '0578' : 2,
            '0577' : 2,
            '0569' : 2,
            '0594' : 2,
            '0827' : 2,
            '0736' : 2,
            '0735' : 2,
            '0725' : 2,
            '0737' : 2,
            '0739' : 2,
            '0743' : 2,
            '0742' : 2,
            '0740' : 2,
            '0721' : 2,
            '0599' : 2,
            '0561' : 2,
            '0562' : 2,
            '0563' : 2,
            '0595' : 2,
            '0596' : 2,
            '0598' : 2,
            '0597' : 2,
            '0744' : 2,
            '0852' : 2,
            '0956' : 2,
            '0955' : 2,
            '0954' : 2,
            '0952' : 2,
            '0957' : 2,
            '0959' : 2,
            '0966' : 2,
            '0965' : 2,
            '0964' : 2,
            '0950' : 2,
            '0949' : 2,
            '0942' : 2,
            '0940' : 2,
            '0930' : 2,
            '0943' : 2,
            '0944' : 2,
            '0948' : 2,
            '0947' : 2,
            '0946' : 2,
            '0967' : 2,
            '0968' : 2,
            '0987' : 2,
            '0986' : 2,
            '0985' : 2,
            '0984' : 2,
            '0993' : 2,
            '0994' : 2,
            '0997' : 2,
            '0996' : 2,
            '0995' : 2,
            '0983' : 2,
            '0982' : 2,
            '0973' : 2,
            '0972' : 2,
            '0969' : 2,
            '0974' : 2,
            '0977' : 2,
            '0980' : 2,
            '0979' : 2,
            '0978' : 2,
            '0920' : 2,
            '0898' : 2,
            '0855' : 2,
            '0854' : 2,
            '0853' : 2,
            '0553' : 2,
            '0856' : 2,
            '0857' : 2,
            '0863' : 2,
            '0859' : 2,
            '0858' : 2,
            '0848' : 2,
            '0847' : 2,
            '0835' : 2,
            '0834' : 2,
            '0833' : 2,
            '0836' : 2,
            '0837' : 2,
            '0846' : 2,
            '0845' : 2,
            '0838' : 2,
            '0865' : 2,
            '0866' : 2,
            '0892' : 2,
            '0889' : 2,
            '0887' : 2,
            '0893' : 2,
            '0894' : 2,
            '0897' : 2,
            '0896' : 2,
            '0895' : 2,
            '0885' : 2,
            '0884' : 2,
            '0869' : 2,
            '0868' : 2,
            '0867' : 2,
            '0875' : 2,
            '0877' : 2,
            '0883' : 2,
            '0880' : 2,
            '0879' : 2,
            '0829' : 2,
            '0550' : 2,
            '0228' : 2,
            '0226' : 2,
            '0225' : 2,
            '0224' : 2,
            '0229' : 2,
            '0233' : 2,
            '0237' : 2,
            '0235' : 2,
            '0234' : 2,
            '0223' : 2,
            '0220' : 2,
            '0192' : 2,
            '0191' : 2,
            '0187' : 2,
            '0193' : 2,
            '0194' : 2,
            '0198' : 2,
            '0197' : 2,
            '0195' : 2,
            '0238' : 2,
            '0240' : 2,
            '0260' : 2,
            '0259' : 2,
            '0258' : 2,
            '0257' : 2,
            '0261' : 2,
            '0263' : 2,
            '0266' : 2,
            '0265' : 2,
            '0264' : 2,
            '0256' : 2,
            '0255' : 2,
            '0243' : 2,
            '0242' : 2,
            '0241' : 2,
            '0244' : 2,
            '0246' : 2,
            '0254' : 2,
            '0248' : 2,
            '0247' : 2,
            '0186' : 2,
            '0185' : 2,
            '0144' : 2,
            '0143' : 2,
            '0142' : 2,
            '0139' : 2,
            '0145' : 2,
            '0146' : 2,
            '0154' : 2,
            '0153' : 2,
            '0152' : 2,
            '0138' : 2,
            '0137' : 2,
            '0125' : 2,
            '0124' : 2,
            '0123' : 2,
            '0126' : 2,
            '0133' : 2,
            '0136' : 2,
            '0135' : 2,
            '0134' : 2,
            '0155' : 2,
            '0156' : 2,
            '0176' : 2,
            '0175' : 2,
            '0174' : 2,
            '0178' : 2,
            '0179' : 2,
            '0184' : 2,
            '0183' : 2,
            '0182' : 2,
            '0173' : 2,
            '0172' : 2,
            '0162' : 2,
            '0158' : 2,
            '0157' : 2,
            '0163' : 2,
            '0164' : 2,
            '0167' : 2,
            '0166' : 2,
            '0165' : 2,
            '0267' : 2,
            '0250' : 2,
            '0533' : 2,
            '0422' : 2,
            '0532' : 2,
            '0531' : 2,
            '0436' : 2,
            '0428' : 2,
            '0536' : 2,
            '0299' : 2,
            '0294' : 2,
            '0293' : 2,
            '0475' : 2,
            '0295' : 2,
            '0297' : 2,
            '0296' : 2,
            '0495' : 2,
            '0438' : 2,
            '0466' : 2,
            '0465' : 2,
            '0467' : 2,
            '0478' : 2,
            '0476' : 2,
            '0470' : 2,
            '0463' : 2,
            '0479' : 2,
            '0493' : 2,
            '0494' : 2,
            '0439' : 2,
            '0268' : 2,
            '0480' : 2,
            '0460' : 2,
            '0538' : 2,
            '0537' : 2,
            '0539' : 2,
            '0279' : 2,
            '0548' : 2,
            '0280' : 2,
            '0282' : 2,
            '0278' : 2,
            '0277' : 2,
            '0269' : 2,
            '0270' : 2,
            '0274' : 2,
            '0276' : 2,
            '0283' : 2,
            '0551' : 2,
            '0289' : 2,
            '0287' : 2,
            '0547' : 2,
            '0288' : 2,
            '0544' : 2,
            '0545' : 2,
            '0284' : 2,
            '0291' : 2,
            '0285' : 2,
            '0120' : 3,
            '0570' : 3,
            '0800' : 3,
            '0990' : 3,
  };
  groups[3] = {
            '020' : 3,
            '070' : 3,
            '080' : 3,
            '090' : 3,
            '099' : 3,
            '054' : 3,
            '058' : 3,
            '098' : 3,
            '095' : 3,
            '097' : 3,
            '052' : 3,
            '053' : 3,
            '011' : 3,
            '096' : 3,
            '049' : 3,
            '015' : 3,
            '048' : 3,
            '072' : 3,
            '084' : 3,
            '028' : 3,
            '024' : 3,
            '076' : 3,
            '023' : 3,
            '047' : 3,
            '029' : 3,
            '075' : 3,
            '025' : 3,
            '055' : 3,
            '026' : 3,
            '079' : 3,
            '082' : 3,
            '027' : 3,
            '078' : 3,
            '077' : 3,
            '083' : 3,
            '022' : 3,
            '086' : 3,
            '089' : 3,
            '045' : 3,
            '044' : 3,
            '092' : 3,
            '046' : 3,
            '017' : 3,
            '093' : 3,
            '059' : 3,
            '073' : 3,
            '019' : 3,
            '087' : 3,
            '042' : 3,
            '018' : 3,
            '043' : 3,
            '088' : 3,
            '050' : 4,
  };
  groups[2] = {
            '04' : 4,
            '03' : 4,
            '06' : 4,
  };
  groups[6] = {
            'aa' : 4,
            'bb' : 4,
  };

  var number = input.replace('/[^\d]++/', '');

  var tel = '';

  groups.forEach(function (data, i){
    var area = number.slice(0,i);

    if(data[area]){
      var formatted = '';
      var test1 = number.slice(0,i);
      var test2 = number.slice(i,i+data[area]);
      var test3 = number.slice(i+data[area]);

      tel = test1 + '-' + test2 + '-' + test3;
    }
  });

  return tel;

}

参考:
https://qiita.com/mpyw/items/431c0c8cb70084a74be5

harukingo
2013~2016 新卒でSIer 2017~   社内コンテンツを作るWebエンジニアに転職。勉強中
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