【问题标题】:Format Phone # into 10 Digits / Remove extra characters将电话号码格式化为 10 位数字/删除多余的字符
【发布时间】:2013-06-25 08:58:28
【问题描述】:

我需要将电话号码即时格式化为 10 位数字 - 删除所有空格、破折号、点等。

例如:(123) 321-1234 / 123-321-1234 变为 1233211234

我见过相反的例子,但由于我是 Javascript 新手,我不知道该怎么做。

理想情况下,应该在将数字输入文本字段或按下提交按钮时进行格式化。

PS - 我只知道 HTML,所以请提供两个标签的代码。

非常感谢您的帮助!

【问题讨论】:

  • 嘿 Levchik- 欢迎来到 Stackoverflow!通常最好的做法是提供一些你尝试过的例子。只是说“请给我代码”有点不受欢迎。当您遇到困难时,我们希望在这里,而不是在您希望其他人为您工作时。祝你好运!

标签: javascript html forms trim


【解决方案1】:

只需将所有非数字字符替换为空字符串即可。

("(123) 321-1234").replace(/[^\d]/g, '')

【讨论】:

    【解决方案2】:

    不是完美的解决方案,但会起作用。如果您需要在字符串中出现“/”之类的字符之前提取数字,然后使用正则表达式 \D 从字符串中删除非数字字符,然后在以下示例中以所需格式映射数字,请使用 split格式。

    `let rawString = "111.222.3333 / need to remove this text (some more text)"
    
     const formatTelNumber = (phoneNumberString) => {
       let stringWithNumber = phoneNumberString.split("/")[0]
       let cleaned = ("" + stringWithNumber).replace(/\D/g, "")
       let match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/)
       if (match) {
         return `(${match[1]}) ${match[2]}-${match[3]}`
       }
       return null;
    };
    console.log(formatTelNumber(rawString))`
    

    干杯! JK

    【讨论】:

      【解决方案3】:

      您可以使用正则表达式从文本框的值中删除所有非数字。这是一个例子:

      <input type="text" id="text1" />
      

      有了这个 JS:

      function addEvent(element, eventName, callback) {
          if (element.addEventListener) {
              element.addEventListener(eventName, callback, false);
          } else if (element.attachEvent) {
              element.attachEvent("on" + eventName, callback);
          }
      }
      
      addEvent(window, "load", function () {
          addEvent(document.getElementById("text1"), "change", function () {
              var tel = this.value;
              tel = tel.replace(/\D+/g, "");
              this.value = tel;
          });
      });
      

      演示: http://jsfiddle.net/6vC3x/

      当文本框的值被更改(通过用户输入)并且文本框模糊(未选中)时,会发生替换。

      整个addEvent 函数只是希望可靠地跨浏览器向元素添加事件处理程序。

      【讨论】:

      • @LevchikB 没问题,很高兴它有帮助!您可能想接受答案,或解释您在此方面特别需要的任何其他帮助
      • 伊恩,还有一个关于这个的问题。如果用户在数字之前输入国家代码,如果它是 1 或 0(零),我们可以删除第一个 DIGIT。你会怎么做?例如:1-234-567-1234 变为 2345671234 感谢您的帮助!
      • @LevchikB 抱歉,回复延迟。所以为此,我能想到的最简单的方法是使用这个:tel = tel.replace(/\D+/g, "").replace(/^[01]/, "");。这是一个示例:jsfiddle.net/6vC3x/1。希望对您有所帮助!
      • 嘿,伙计——我只是想问关于国家代码(数字前的 1)的相同问题,但看到了你的最后一条评论——那是一堆!这些年你的小剧本一直在为我创造奇迹!!!
      猜你喜欢
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2011-06-12
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      相关资源
      最近更新 更多