使用正则表达式模式进行字符串匹配的最有效方法是什么?
// Something like this:
let phone = '+12345678901';
const phoneRegexp = /\+\d{1,2}\s\(\d{3}\)\s\d{3}\-\d{4}/;
console.log(doTheAwesomeness(phone, phoneRegexp));
// Output: +1 (234) 567-8901
提前感谢您的帮助。
答案 0 :(得分:3)
您可以捕获数字模式并替换为后引用:
phone.replace(/^(\+\d{1,2})(\d{3})(\d{3})(\d{4})$/, "$1 ($2) $3-$4")
# '+1 (234) 567-8901'
您可能希望添加字符串anchor ^
的开头和字符串anchor $
的结尾,以确保字符串与您指定的模式完全匹配(如果您尝试格式化手机)数;而且正如@TimBiegeleisen评论的那样,如果这与模式不匹配,则字符串不会发生任何事情,因此您需要手动检查字符串是否与模式匹配并正确处理异常。