【发布时间】: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})?$也适用于修剪