Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换字符串以匹配JavaScript中的正则表达式_Javascript_Regex - Fatal编程技术网

替换字符串以匹配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函数将获得正确的字符串,因为它将在上面的某个位置进行计算。我考虑过拆分字符串并根据索引注入适当的符号,显然,这是一个选项,但我想知道是否有更优雅的方式。也许还可以添加一个检查,看看字符串是否与模式匹配。这太棒了!可读性强,工作正常。非常感谢你,菲斯多姆!