JS字符串:替换为正则表达式中的索引

时间:2016-12-29 12:49:07

标签: javascript arrays regex string

我几乎没有使用正则表达式的经验,我想知道你将如何替换正则表达式标识的字符串中的一个部分,其中索引是已识别部分的一部分?

这是我的示例字符串:

let exampleStr = "How do I {0} the {n} with the {1} in my array?";

这是我的数据阵列:

let arr = ["replace", "items"];

现在,使用replace和regex,我想将{#}部分中的索引与匹配索引的数组元素进行匹配。

结果字符串:

let result = "How do I replace the {n} with the items in my array?";

注意它将如何忽略{n},因为它不包含数值。

我可以使用Array.indexOf,Number.isNaN,typeof等来实现这一点,但正则表达式似乎是“正确”且更清晰的方式,而有点难以阅读:)

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以使用replace with a callback



let exampleStr = "How do I {0} the {n} with the {1} in my array?";
let arr = ["replace", "items"];

let result = exampleStr.replace(/\{(\d+)\}/g, (g0, g1)=>arr[parseInt(g1,10)]);
console.log(result);




模式很简单 - 它匹配花括号内的数字,并将数字捕获到组号1 回调函数解析数字(这不是严格要求的,但是arr["1"]并不漂亮),然后从数组中返回正确的元素。
回调可能会使用更多的错误检查。