JavaScript实现手机号格式化:去空格、首字符为0时替换为+355
JavaScript手机号格式化实现方案
function formatPhone(phone) { // 第一步:清理所有非+和数字的字符 const cleanedPhone = phone.replace(/[^+\d]/g, '') // 第二步:开头为0则替换为国家码+355,否则直接返回清洗结果 return cleanedPhone.startsWith('0') ? cleanedPhone.replace(/^0/, '+355') : cleanedPhone }
测试验证
// 场景1测试 console.log(formatPhone('0321 1234567')) // 输出:+3553211234567 // 场景2测试 console.log(formatPhone('+355 321 1234567')) // 输出:+3553211234567 // 场景3测试 console.log(formatPhone('+3553211234567')) // 输出:+3553211234567
逻辑说明
- 清洗步骤的正则
/[^+\d]/g会匹配所有不是+号和数字的字符,包括空格、横杠、括号等常见的手机号分隔符,全部替换为空完成清洗 - 第二步用
startsWith('0')判断清洗后的手机号是否以0开头,符合条件则用正则^0匹配开头的0,替换为国家码+355,本身已经带+355的手机号不会触发替换逻辑,直接返回清洗后的结果即可
如果需要额外增加格式校验,可以在返回前增加判断逻辑,比如判断最终结果是否符合^\+355\d{9}$的规则(阿尔巴尼亚手机号国家码+355后接9位数字),不符合的话抛出错误或者返回提示:
function formatPhone(phone) { const cleanedPhone = phone.replace(/[^+\d]/g, '') const formatted = cleanedPhone.startsWith('0') ? cleanedPhone.replace(/^0/, '+355') : cleanedPhone // 可选:格式校验 const validRule = /^\+355\d{9}$/ if (!validRule.test(formatted)) { throw new Error('手机号格式无效') } return formatted }
内容的提问来源于stack exchange,提问作者Ani
相关产品推荐
相关产品推荐

