JavaScript phone 号码的正则表达式不匹配
JavaScript regexp for phone number does not match
我想就以下问题寻求帮助:
我有以下正则表达式:
var r = /^(\+455\ )(\d{3})(\d{1,3})(\d{1,3})$/
我想用这个正则表达式来替换数字并用空格分隔这个数字,例如:“+455 123 123 123”。
我原以为上面的正则表达式会完成以下工作:当我有“+455”和 4 位数字时,它会 return 是这样的:
“+455 123 1”,但它只适用于第二组的第 5 位数字,输出如下:
'+455 1111'.replace(r," ");
是 return 这个:'+455 1111'
(我预计 +455 111 1
)
和'+455 11121'.replace(r," ");
是return这个:'+455 111 2 1'
(我预计+455 111 21
)
任何人都可以帮忙告诉我,我在声明正则表达式时哪里做错了吗?或其他任何地方...
提前谢谢你。
兄弟们,
汤姆
正如评论中所说。您可以将最后一组设置为可选,以避免它匹配您希望放入第二组的数字。
经过一些更正,您可以使用此正则表达式:^(\+455)\ ?(\d{3})\ ?(\d{1,3})?\ ?(\d{1,3})?
在更改中,我在每个组之间添加了一个非强制性 space,我已将 space 从第一组中移出,以便在每个组中做同样的事情。所以现在你应该这样做:
let regex = /^(\+455)\ ?(\d{3})\ ?(\d{1,3})?\ ?(\d{1,3})?$/;
console.log("+455111222333".replace(regex, " "));
console.log("+455111".replace(regex, " "));
console.log("+45511122".replace(regex, " "));
console.log("+4551112223".replace(regex, " "));
console.log("+455111 22".replace(regex, " "));
console.log("+455111 22".replace(regex, " "));
console.log("+455123 12345".replace(regex, " "));
由于量词中的 {1,3}
,模式 ^(\+455 )(\d{3})(\d{1,3})(\d{1,3})$
匹配至少 5 个数字。
如果您将最后一组设置为可选,则第 4 组中第 7-9 位的第 3 组可以匹配
您也可以省略 space 前的反斜杠 \
^(\+455\ )(\d{3})(\d{1,3})(\d{1,3})?$
const regex = /^(\+455 )(\d{3})(\d{1,3})(\d{1,3})?$/;
[
"+455 123123123",
"+455 1111",
"+455 11121"
].forEach(s =>
console.log(s.replace(regex, " "))
);
我想就以下问题寻求帮助:
我有以下正则表达式:
var r = /^(\+455\ )(\d{3})(\d{1,3})(\d{1,3})$/
我想用这个正则表达式来替换数字并用空格分隔这个数字,例如:“+455 123 123 123”。
我原以为上面的正则表达式会完成以下工作:当我有“+455”和 4 位数字时,它会 return 是这样的: “+455 123 1”,但它只适用于第二组的第 5 位数字,输出如下:
'+455 1111'.replace(r," ");
是 return 这个:'+455 1111'
(我预计 +455 111 1
)
和'+455 11121'.replace(r," ");
是return这个:'+455 111 2 1'
(我预计+455 111 21
)
任何人都可以帮忙告诉我,我在声明正则表达式时哪里做错了吗?或其他任何地方...
提前谢谢你。
兄弟们, 汤姆
正如评论中所说。您可以将最后一组设置为可选,以避免它匹配您希望放入第二组的数字。
经过一些更正,您可以使用此正则表达式:^(\+455)\ ?(\d{3})\ ?(\d{1,3})?\ ?(\d{1,3})?
在更改中,我在每个组之间添加了一个非强制性 space,我已将 space 从第一组中移出,以便在每个组中做同样的事情。所以现在你应该这样做:
let regex = /^(\+455)\ ?(\d{3})\ ?(\d{1,3})?\ ?(\d{1,3})?$/;
console.log("+455111222333".replace(regex, " "));
console.log("+455111".replace(regex, " "));
console.log("+45511122".replace(regex, " "));
console.log("+4551112223".replace(regex, " "));
console.log("+455111 22".replace(regex, " "));
console.log("+455111 22".replace(regex, " "));
console.log("+455123 12345".replace(regex, " "));
由于量词中的 {1,3}
,模式 ^(\+455 )(\d{3})(\d{1,3})(\d{1,3})$
匹配至少 5 个数字。
如果您将最后一组设置为可选,则第 4 组中第 7-9 位的第 3 组可以匹配
您也可以省略 space 前的反斜杠 \
^(\+455\ )(\d{3})(\d{1,3})(\d{1,3})?$
const regex = /^(\+455 )(\d{3})(\d{1,3})(\d{1,3})?$/;
[
"+455 123123123",
"+455 1111",
"+455 11121"
].forEach(s =>
console.log(s.replace(regex, " "))
);