拆分和添加电话号码之间的空间
Split and Add Space Between Phone Number
我正在尝试将电话号码格式化成更整齐的格式,在前面每隔第三个和第七个字符之间增加一个空格。
var string = "02076861111"
var phone = [string.slice(0, 3), " ", string.slice(3)].join('');
console.log(phone);
我在哪里放置第七个字符的方法以便返回020 7686 1111
?
单次替换:
var string = "02076861111"
var phone = string.replace(/('d{3})('d{4})('d{4})/, '$1 $2 $3');
console.log(phone);
当然,这假设你总是有一个完美的字符串(没有空格,连字符或其他字符,10个字符…)
一个更严格的正则表达式可能像这样:
var phone = string.replace(/'D*('d{3})'D*('d{4})'D*('d{4})'D*/, '$1 $2 $3');
但是,这仍然不能捕捉到所有的可能性
重新切片:
var string = "02076861111";
var phone = [string.slice(0, 3), " ", string.slice(3,7), " ", string.slice(7)].join('');
console.log(phone);
Slice接受起始索引和(不包括)结束索引。注意,如果缺少结束索引,它将取字符串的其余部分。
第一个切片从索引0到2,第二个切片从索引3到6,最后一个切片从索引7到字符串的末尾。
另一种解决方案:
function numberWithSpaces(value, pattern) {
var i = 0,
phone = value.toString();
return pattern.replace(/#/g, _ => phone[i++]);
}
console.log(numberWithSpaces('02076861111', '### #### ####'));
当正则表达式可以工作时,为什么要使用slice
console.log( "02076861111".replace(/('d{3})'D?('d{4})'D?('d{4})/,"$1 $2 $3") );
,如果用户输入空格开始,这个将不会爆炸
您必须考虑只有11、12和13个字符的号码是有效的,您必须知道一个有效的电话号码由国家代码加上10位数字组成。因此,我想按国家代码格式化电话号码,然后是一些任意组,如+1 555 555 5555,+22 555 555 555,或+333 555 555 5555 5555。
因此我想要一个函数来过滤数字并格式化它们:
export const formatPhone = (phone: string) => {
const myPhone = phone.match(/('d)/g)?.join(``);
if (myPhone === undefined) return ``;
if (myPhone?.length === 11) {
return myPhone.replace(/('d{1})('d{3})('d{3})('d{4})/, `+$1 $2 $3 $4`);
}
if (myPhone?.length === 12) {
return myPhone.replace(/('d{2})('d{3})('d{3})('d{4})/, `+$1 $2 $3 $4`);
}
if (myPhone?.length === 13) {
return myPhone.replace(/('d{3})('d{3})('d{3})('d{4})/, `+$1 $2 $3 $4`);
}
return myPhone;
};
如果你想用一个函数来验证一个数字它会是这样的
export const validatePhone = (myPhone: string) => {
if (myPhone === ``) return ``;
const phone = myPhone.match(/('d)/g)?.join(``);
if (phone === undefined) return `only numbers are valid`;
if (phone?.length > 13 || phone?.length < 11)
return `${phone} is not a valid number`;
};
console.log( "02076861111".replace(/^'d{3}-'d{8}$/) );
相关文章:
- JSDoc:模块和名称空间之间的关系是什么
- 静态html中图像之间的空间在javascript中消失
- 画布填充-形状之间的空间(抗锯齿)
- 在图例项目之间添加额外空间的高图表
- 标题中大写字母之间的角度UI网格空间
- 声明Javascript名称空间的两种方法之间的区别
- 限制td之间的空间
- 如何在不让web组件的原型进入全局命名空间的情况下维护它们之间的依赖关系
- 在按钮之间添加隐藏空间
- 命名空间和词法范围之间的关系是什么
- 如何通过在两个节点之间拖放来制作边缘,并在细胞空间中扩展 egdehandle 扩展.js
- 如何在两个图像之间添加空间
- Javascript - 命名空间与闭包之间的区别
- TypeScript/JavaScript中的模块和命名空间之间的区别是什么
- 正在删除图像之间不需要的空间
- 增加了网站上项目之间的空间
- Javascript需要填充内容和页脚之间的剩余高度空间
- 摇摆图像之间的黑色空间
- 在Twitter引导程序中创建网格跨度之间的空间
- Javascript 命名空间 - 函数之间的变量交换