Jor*_*ash 3 javascript node.js
我对正则表达式真的很陌生,但这就是我想要做的。
我有一个电话号码输入,我需要将它转换成这样的字符串:
'2228883333'
用户可能会像以下任何一种方式输入它:
222 888 3333
(222) 888 3333
12228883333
1 222 888 3333
1 (222) 888 3333
2228883333
+1 222 888 3333
Run Code Online (Sandbox Code Playgroud)
我想让用户输入它,但是他们最习惯,然后在服务器端(NodeJS)将电话号码转换为我想要的格式
这是我在 PHP 中尝试的正则表达式,但我不知道如何在 Javascript 中执行它。
var number = req.body.phone;
number = number.replace('~.*(\d{3})[^\d]{0,7}(\d{3})[^\d]{0,7}(\d{4}).*~', '$1$2$3');
Run Code Online (Sandbox Code Playgroud)
知道如何在 NodeJS (Javascript) 中实现这一点吗?
如果您完全按照您的描述进行操作,那么当有人尝试从美国境外输入电话号码时,您的系统就会失败。
我建议在号码中保留 +1(或仅 1),并且仅当号码不包含其他国家/地区代码时才添加它。
我会在这里做什么:
例子:
var number = req.body.phone;
number = number.replace(/[^\d+]+/g, '');
number = number.replace(/^00/, '+');
if (number.match(/^1/)) number = '+' + number;
if (!number.match(/^\+/)) number = '+1' + number;
Run Code Online (Sandbox Code Playgroud)
现在,对于所有数字:
222 888 3333
(222) 888 3333
12228883333
1 222 888 3333
1 (222) 888 3333
2228883333
+1 222 888 3333
Run Code Online (Sandbox Code Playgroud)
加上一些额外的:
001 222 888 3333
001 (222) 888 3333
001(222)888-3333
Run Code Online (Sandbox Code Playgroud)
你应该有一个标准化的表示,但这次是:
+12228883333
Run Code Online (Sandbox Code Playgroud)
支持国际号码。如果需要,您可以删除加号:
number = number.replace(/^\+/, '');
Run Code Online (Sandbox Code Playgroud)
但我建议保留它,以便清楚地表明此号码包括处理该数据的任何人的国家/地区代码,并且这是一个任何人都可以在世界各地直接拨打的号码。
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |