电话号码格式javascript
Phone number format javascript
我正在尝试用regexp格式化一些电话号码。我存储的电话号码长度不同,所有电话号码都有国家代码。假设一个数字如下:00460708186681。我想把那个格式化为:+46(0)708-18 66 81。前三组很容易:
/00(['d]{2})(['d]{1})(['d]{3})/
因为数字的开头总是一样的。这是最后一部分,我不知道剩余字符的长度(我想把它们分成两组)。
以以下正则表达式作为基础:
00('d{2})('d)('d{3})('d{2})
现在为可能拥有的每一对添加另一对('d{2})?
(注意"?")。因此,如果最大配对数为3,则执行以下操作:
00('d{2})('d)('d{3})('d{2})('d{2})?('d{2})?
这并不好看,但你需要这样做,才能正确地将它们分组。或者你可以简单地做:
00('d{2})('d)('d{3})((?:'d{2}){2,4}) // In this case it's 2 to 4 pairs of digits on the end.
要匹配字符串,您可以手动在最后一组中添加空格,该组将包含初始格式后的所有数字。
Regex不是这里的最佳解决方案。使用此:
var num = new String("00460708186681"),
i = 2,
p,
res = "+"+num.substr(i,2)+" ("+num.charAt(i+=2)+")"+num.substr(++i,3)+"-"+num.substr(i+=3,2);
while (p=num.substr(i+=2,2))
res+= "'u00A0"+p;
return res;
这将适用于无限长的数字。正则表达式不能做到这一点。
以下是解决方案:
Javascript:
var num="00460708186681";
var res=num.replace(/([0+]{2})([1-9]{2})(['d]{1})(['d]{3})(['d]{2})(['d]{2})(['d]{2})/g,'+$2($3)-$4 $5 $6 $7');
alert(res);
在上尝试以上脚本http://codebins.com/
这里有一个用TypeScript完成的代码示例,但您肯定可以将其解析为JavaScript:
const formatPhoneNumber = (phoneNumber: number, format?: string, code?: boolean): string => {
let _format = format === undefined ? '--- --- ---' : format
let x = 1
const newFormat = _format.replace(/-+/g, () => '$' + x++)
let regex = '^'
_format.match(/-+/g)?.forEach((c, k) => {
regex += `(''d{${c.length}})?`
})
return (code !== undefined && code === true ? '+' : '') + (phoneNumber.toString().concat(_format.split(' ').join(''))).slice(0, _format.split(' ').join('').length).toString().replace(new RegExp(regex, 'g'), newFormat)}
要测试它,你可以做:
const formatedPhoneNumber = formatPhoneNumber(600000000) // => 600 000 000
const formatedPhoneNumberWithCountryCode = formatPhoneNumber(237600000000, 'xxx xxx xxx xxx', true) // => +237 600 000 000
这个例子是完全模块化的,所以您可以指定自己的格式(模板)来获得不同的输出!
注意:我是喀麦隆人,这就是我使用那个奇怪模板的原因,请随意将模板调整为所需的电话号码模板
相关文章:
- Javascript格式UTC日期
- 将数组从javascript格式化为php的更好方法,反之亦然
- 将数组转换为javascript格式的字符串
- 如何比较 JavaScript 格式为 2011-jan-21 的两个日期
- 记事本++ Javascript格式样式和变量列表
- Javascript格式时间军用am pm从字符串
- JavaScript格式的对象数组嵌套到子对象中
- 将日期导出为Javascript格式
- 获取 PHP 或 JavaScript 格式的 YouTube 视频提要
- 如何将当前时间与使用 Javascript 格式化为字符串的时间范围进行比较
- Javascript格式不带时区的日期
- 将 UTC 日期格式转换为 JavaScript 格式
- 将文件读取到 blob 并以 JavaScript 格式显示
- 使用具有有效 JavaScript 格式的 Json.NET 序列化对象
- HTML 表单不会以 JavaScript 格式提交
- Onedrive cors 以 JavaScript 格式下载
- 计算两个给定时间的以毫秒为单位的时间差;DD/MM/YYYY HH:MM:ss:ms”;javascript格式
- Javascript格式日期
- 在responsd_to中使用javascript格式时ActionController::UnknownFormat
- Javascript格式错误