Javascript 如何使用JS String.replace并使用RegEx替换为括号组的一部分

Javascript 如何使用JS String.replace并使用RegEx替换为括号组的一部分,javascript,regex,Javascript,Regex,我有以下代码: 字符串 .替换(/^1[xyz]/g,“$1”) .替换(/-1[xyz]/g,“-$1”) .替换(/1[xyz]/g,“$1”); 其中string是一个数学表达式。我希望将$1替换为x、y或z,具体取决于括号中匹配的字母。这将替换字符串中的所有事件。如何使其正确更换 示例: 1x→ x -1x→ -x 5x+1y→ 5x+y 1x-1z→ x-z 11x+21y→ 11x+21y(仅替换1,而不是11、21等) 您可以使用 \b1([xyz]) \b1一个单词边界,

我有以下代码:

字符串
.替换(/^1[xyz]/g,“$1”)
.替换(/-1[xyz]/g,“-$1”)
.替换(/1[xyz]/g,“$1”);
其中
string
是一个数学表达式。我希望将
$1
替换为x、y或z,具体取决于括号中匹配的字母。这将替换字符串中的所有事件。如何使其正确更换

示例:

  • 1x
    → <代码>x
  • -1x
    → <代码>-x
  • 5x+1y
    → <代码>5x+y
  • 1x-1z
    → <代码>x-z
  • 11x+21y
    → <代码>11x+21y(仅替换1,而不是11、21等)
您可以使用

\b1([xyz])
  • \b1
    一个单词边界,然后匹配1
  • ([xyz])
    捕获组1,匹配
    x
    y
    z
在更换使用组1中

const模式=/\b1([xyz])/g;
[
“1x”,
“-1x”,
“5x+1y”,
“1x-1z”,
“11x+21y”
].forEach(s=>console.log(s+“=>”+s.replace(模式,$1”))您可以使用

\b1([xyz])
  • \b1
    一个单词边界,然后匹配1
  • ([xyz])
    捕获组1,匹配
    x
    y
    z
在更换使用组1中

const模式=/\b1([xyz])/g;
[
“1x”,
“-1x”,
“5x+1y”,
“1x-1z”,
“11x+21y”

].forEach(s=>console.log(s+“=>”+s.replace(模式,$1”))要考虑的另一个选项是使用一个实际的表达式解析器,这将避免长期的许多头痛。另一个考虑的选项是使用一个实际的表达式解析器,从长远来看,这将避免很多头痛。