替换字符串以匹配JavaScript中的正则表达式
使字符串与给定的正则表达式模式匹配的最有效方法是什么替换字符串以匹配JavaScript中的正则表达式,javascript,regex,Javascript,Regex,使字符串与给定的正则表达式模式匹配的最有效方法是什么 // 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 提前感谢您的帮助。您可以捕获数字模式并替换为反向参考: ph
// 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
提前感谢您的帮助。您可以捕获数字模式并替换为反向参考:
phone.replace(/^(\+\d{1,2})(\d{3})(\d{3})(\d{4})$/, "$1 ($2) $3-$4")
# '+1 (234) 567-8901'
如果您试图格式化电话号码,您可能需要添加字符串锚定的开头
^
和字符串锚定的结尾$
,以确保字符串与您指定的模式完全匹配;此外,正如@TimBiegeleisen所评论的,如果这与模式不匹配,字符串将不会发生任何变化,因此您需要手动检查字符串是否与模式匹配,并适当处理异常。对于无效输入,您希望函数做些什么,以及到目前为止您为doTheAwesomeness()尝试了哪些实现
?doTheAwesomeness函数将获得正确的字符串,因为它将在上面的某个位置进行计算。我考虑过拆分字符串并根据索引注入适当的符号,显然,这是一个选项,但我想知道是否有更优雅的方式。也许还可以添加一个检查,看看字符串是否与模式匹配。这太棒了!可读性强,工作正常。非常感谢你,菲斯多姆!