【问题标题】:JavaScript regexp for phone number does not match电话号码的 JavaScript 正则表达式不匹配
【发布时间】:2022-01-03 14:22:01
【问题描述】:

我想就以下问题寻求帮助:

我有以下正则表达式:

var r = /^(\+455\ )(\d{3})(\d{1,3})(\d{1,3})$/

我想用这个正则表达式替换数字并用空格分隔这个数字,例如:“+455 123 123 123”。

我期待,上面的正则表达式将完成以下工作:当我有“+455”和 4 位数字时,它会返回: "+455 123 1",但只能从第二组的第 5 位开始工作,输出如下:

'+455 1111'.replace(r,"$1$2 $3 $4"); 正在返回这个:'+455 1111'(我期望 +455 111 1

'+455 11121'.replace(r,"$1$2 $3 $4"); 正在返回这个:'+455 111 2 1'(我期望+455 111 21

谁能帮助请告诉我,我在声明正则表达式时哪里出错了?或其他任何地方...

提前谢谢你。

Brgds, 汤姆

【问题讨论】:

  • 您可以将最后一组设为可选 ^(\+455 )(\d{3})(\d{1,3})(\d{1,3})?$ regex101.com/r/FtYfs9/1
  • 非常感谢您的帮助,它可以工作...它只是在替换值后添加空格,但可以使用修剪,'+455 111222'.replace(r,"$1$2 $3 $4").trim();,最后我发现,该解决方案还可以将正则表达式更新为^(\+455 )(\d{3})(\d{0,3})(\d{0,3})?$ 也适用于修剪

标签: javascript regexp-replace


【解决方案1】:

由于量词中的{1,3},模式^(\+455 )(\d{3})(\d{1,3})(\d{1,3})$ 至少匹配5 位数字。

如果您将最后一组设为可选,则可以匹配第 4 组中第 7 到第 9 位的第 3 组

在这部分\ \ 中也可以省略空格前的反斜杠

^(\+455\ )(\d{3})(\d{1,3})(\d{1,3})?$

Regex demo

const regex = /^(\+455 )(\d{3})(\d{1,3})(\d{1,3})?$/;
[
  "+455 123123123",
  "+455 1111",
  "+455 11121"
].forEach(s =>
  console.log(s.replace(regex, "$1$2 $3 $4"))
);

【讨论】:

    【解决方案2】:

    正如 cmets 中所说。您可以将最后一组设为可选,以避免它与您希望放入第二组的数字相匹配。

    进行一些更正后,您可以使用此正则表达式:^(\+455)\ ?(\d{3})\ ?(\d{1,3})?\ ?(\d{1,3})?
    在更改中,我在每个组之间添加了一个非强制性空格,我已经将空间移出第一组,以便在每个组上制作相同的内容。所以现在你应该这样做:

    let regex = /^(\+455)\ ?(\d{3})\ ?(\d{1,3})?\ ?(\d{1,3})?$/;
    console.log("+455111222333".replace(regex, "$1 $2 $3 $4"));
    console.log("+455111".replace(regex, "$1 $2 $3 $4"));
    console.log("+45511122".replace(regex, "$1 $2 $3 $4"));
    console.log("+4551112223".replace(regex, "$1 $2 $3 $4"));
    console.log("+455111 22".replace(regex, "$1 $2 $3 $4"));
    console.log("+455111 22".replace(regex, "$1 $2 $3 $4"));
    console.log("+455123 12345".replace(regex, "$1 $2 $3 $4"));

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      相关资源
      最近更新 更多