首页 > 解决方案 > Javascript字符串操作 - 电话号码验证

问题描述

编辑:我不允许为此使用正则表达式!

我有一项任务是通过 javascript 中的字符串操作来验证 4 种不同类型的电话号码。我必须能够将最终电话号码打印到“收据”中,因为这是 HTML 中的披萨摄入表格。

减去此验证后,我的所有代码都在工作。这些是我需要验证的电话号码类型: 1. ddd-ddd-dddd 2. dddddddddd 3. (ddd)ddddddd 4. (ddd)ddd-dddd

如果号码不符合要求的格式,我还必须提供提醒

标签: javascriptstring

解决方案


你可以试试这个小伙伴。

^\(?\d{3}\)?\-?\d{3}\-?\d{4}$

演示

解释

  • ^- 锚定到字符串的开头。
  • \(?\d{3}\)?\-?这将匹配 (3 digit number), (3 digit number)- , 3 digit number。
  • \d{3}\-?- 这将匹配 3 位数字,3 位数字后跟-.
  • \d{4}- 这将匹配任何 4 位数字。
  • $- 锚定到字符串的末尾。

例子

const regex = /^\(?\d{3}\)?\-?\d{3}\-?\d{4}$/gm;
const str = `999-999-9999
(123)123-1454
1234567890
(123)1231234
a122-123-1234
(123)-123-12345
(123)-(123)-(1234)`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}


推荐阅读