修剪电话号码node.js中的+1

时间:2013-12-02 17:50:21

标签: javascript regex node.js

我有一个包含这种格式的电话号码的字符串: 12345678912

我想修剪字符串中的+1,这样就像这样: 2345678912

我如何在node.js

中执行此正则表达式

2 个答案:

答案 0 :(得分:2)

不要使用正则表达式简单地从字符串的开头删除+1;这太过分了。在这种情况下,可以这样说:

if (phoneNumber && phoneNumber.indexOf('+1') === 0) {
    phoneNumber = phoneNumber.substring(2);
}

但是,解决国家/地区代码问题的通用解决方案必须考虑所有已知的国家/地区代码,这些代码存在于多个地方,包括Wikipedia。但是,它需要几行代码。你必须考虑以下事项:

  • 如果您的字符串以+1开头,则国家/地区代码为1。
  • 如果您的字符串以+2开头,那么如果下一个字符为07,则您有两位数的国家/地区代码,否则如果第二个字符为{ {1}}然后你有一个错误,否则你有一个3位数的代码。

8为3到9之后的第一个数字有类似的规则。

此时,正则表达式变得有趣,虽然看起来很神奇,但它有以下形式

+

相关的SO问题:Regular Expression (RegEx) For Phone Numbers With Country Code Check

修改

使一般问题困难的一个原因是国家代码列表可以扩展。目前,没有以28开头的国家/地区代码,但该组保留用于将来扩展,因此如果分配了新代码,则必须更改代码。确实,完整的正则表达式会很长,难以阅读,并且容易出错。某种具有功能的表驱动方法恕我直言是最好的方法,但除非你在电信业务,我想你可以编写一个应用程序,使调用代码与数字不同。 :)

答案 1 :(得分:2)

由于国家/地区代码不同(它们并非都是'+1'),我想说最好的方法是删除带有加号后跟数字的表达式。

这应该这样做:

.replace(/^\+[0-9]/, '');

测试:

"+12345".replace(/^\+[0-9]/, '');   // 2345
"+2345".replace(/^\+[0-9]/, '');    // 234

当然,如果您只想使用'+1',只需将[0-9]替换为1。