我有一个包含这种格式的电话号码的字符串: 12345678912
我想修剪字符串中的+1,这样就像这样: 2345678912
我如何在node.js
中执行此正则表达式答案 0 :(得分:2)
不要使用正则表达式简单地从字符串的开头删除+1
;这太过分了。在这种情况下,可以这样说:
if (phoneNumber && phoneNumber.indexOf('+1') === 0) {
phoneNumber = phoneNumber.substring(2);
}
但是,解决国家/地区代码问题的通用解决方案必须考虑所有已知的国家/地区代码,这些代码存在于多个地方,包括Wikipedia。但是,它需要几行代码。你必须考虑以下事项:
+1
开头,则国家/地区代码为1。+2
开头,那么如果下一个字符为0
或7
,则您有两位数的国家/地区代码,否则如果第二个字符为{ {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。