如何在指定字母表之间插入括号(即A,D,F,R)和数字使用正则表达式?输入:
A1 F42 D3 R6
预期输出:
(A)1 (F)42 (D)3 (R)6
我所尝试的:
let inputString="f42" let expPattern=/[ADFR]\d{1,3}/ig; console.log(inputString.replace(expPattern,"(`$0`)"));
它只返回“$0”。如何实施更换?
2jcobegt1#
您应该将字母和数字包含在单独的捕获组中,以便可以在替换字符串中引用它们:
let inputString="F42" let expPattern=/([ADFR])(\d{1,3})/ig; console.log(inputString.replace(expPattern,"($1)$2"));
nhn9ugyo2#
如果你想在替换中使用完全匹配,你可以使用一个肯定的前瞻(?=\d{1,3}\b),Assert右边的1-3个数字。要防止部分匹配,可以使用字边界\b在替换中,使用表示为$&的完全匹配请参阅包含所有替换项的regex demo。
(?=\d{1,3}\b)
\b
$&
let inputString="F42" let expPattern=/\b[ADFR](?=\d{1,3}\b)/ig; console.log(inputString.replace(expPattern,"($&)"));
2条答案
按热度按时间2jcobegt1#
您应该将字母和数字包含在单独的捕获组中,以便可以在替换字符串中引用它们:
nhn9ugyo2#
如果你想在替换中使用完全匹配,你可以使用一个肯定的前瞻
(?=\d{1,3}\b)
,Assert右边的1-3个数字。要防止部分匹配,可以使用字边界
\b
在替换中,使用表示为
$&
的完全匹配请参阅包含所有替换项的regex demo。