检查并转换电话号码

时间:2019-02-22 08:58:41

标签: javascript

我有一个电话号码输入字段。

现在我想用jquery / javascript检查数字的语法和字符

我只接受以下格式:31-123456789(也可以用-分隔更多的组)

首先检查是否有国际代码很重要。

我想做一种替换,以替换“()/。:;”。字符,并检查第一个字母是否为0。

但这会查找较大的代码,也不会检查用户是否输入了不允许的字符,例如Abc ...

我如何以最简单的方式检查并格式化以下示例?

031(123)123 -> should return 31-123-123
(0123)123 -> should return a error (no international code)
031.123 -> should return a error (no international code)
31.(123)123 -> 31-123-123
+31.123.123 -> 31-123-123
+31 (123) 123 -> 31-123-123

感谢您向我展示和解释这样做的方式。

1 个答案:

答案 0 :(得分:1)

这里是您可以继续尝试的尝试。它还可以满足您的所有要求。

现在,您只需将配置添加到internationalCodes,该方法即可完成工作

   // All valid internationl code
    var internationalCodes= [
    { codes:["031", "0031", "31"], translateTo: "31", minLength: 8 }
    ]
    var seperatorCount =3;
    var seperator = "-";
    function getNumber(num){
       var notValid = num + " not valid";
       num = num.trim().replace(/[^0-9]/g, ""); // replace all none number char
       
        // find the international configration settings
        var r = internationalCodes.filter(x=> 
        x.codes.findIndex(i=>  num.substr(0, i.length)== i) != -1)

       if (r.length<=0) // no internationalCodes configration
             return notValid;
          r = r[0];

        if (num.length<r.minLength)
            return notValid;
          
          
          var resultNum = r.translateTo;
          var code = r.codes.filter(x=> num.substr(0, x.length) == x)[0]
          
          num = num.substr(code.length, num.lengt)

          
          for (var i = 0; i< num.length; i++)
          {

            if (i % seperatorCount == 0)
                resultNum += seperator;
              resultNum += num[i];
          }
               
           return resultNum;
    }
    console.log(getNumber("031(123)123"))
    console.log(getNumber("(0123)123"))
    console.log(getNumber("031.123"))
    console.log(getNumber("31.(123)123"))
    console.log(getNumber("+31.123.123"))
    console.log(getNumber("+31 (123) 123"))
     console.log(getNumber("+50 (123) 123"))