【问题标题】:Regex for phone number in htmlhtml中电话号码的正则表达式
【发布时间】:2018-06-13 11:11:21
【问题描述】:

我正在尝试为我的一个项目在 html 中编写一个用于电话号码验证的正则表达式。我有一些这样的限制:

+33362658962
+(33)323652369
0963256321

现在,经过我的研究和多次测试,我现在是:

pattern="^(\+|\([0-9]\){2})\d+"

任何帮助将不胜感激,因为我吸收了正则表达式:)

【问题讨论】:

标签: php html regex


【解决方案1】:

这是一个包含您给出的所有示例的正则表达式:

/^((\+|\+\(\d\d\)|)\d+)$/mg

您可以在这里查看正则表达式的实际效果,零组结果就是您要查找的结果:

const regex = /^((\+|\+\(\d\d\)|)\d+)$/mg;
const str = `3323652369
+(33)2342342
45646
+3453535`;
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}`);
    });
}

它只包含您展示的所有特殊情况,并允许您选择其中任何一个,然后是任意数量的数字。不过,这个解决方案的可扩展性和弹性不是很好。电话号码可以采用多种不同的形式,例如,它们可能包含空格或“/”符号。

您应该考虑更准确地指定您的电话号码可以采用哪些形式,这将使您/我们能够开发出更好的解决方案。您在 cmets 中获得的链接是一个很好的起点。

【讨论】:

    【解决方案2】:

    这将起作用:

    ^(((\+[\d]{2,2})|\+\([\d]{2,2}\))|[0])?[0-9]+$
    

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 2014-02-15
      • 1970-01-01
      • 2016-02-02
      • 2011-12-14
      相关资源
      最近更新 更多