在替换中使用匹配

Use match in replace

我需要将每个非字母字符放在空格之间。 我想使用 RegExp 来做到这一点,我知道它足以 select 他们全部 (/(^a-zA-Z )/g).
有没有办法在替换中使用原始匹配项? (就像是) str.replace(/(^a-zA-Z )/g,/ \m /); 如果不是,我将循环遍历所有这些,但我真的很想知道这是可能的。

是的,这是可能的。您可以将正则表达式与组一起使用:

var text = '2apples!?%$';
var nextText = text.replace(/([^a-zA-Z])/g, '  ');

console.log(nextText); 

是的。您可以在搜索时为 String.prototype.replace() 函数提供一个 RegExp。你也可以给它一个函数来处理替换。

函数会给你匹配作为第一个参数,你return你想把它改成什么。

const original = 'a1b2c';
const replaced = original.replace(/([^a-z])/gi, match => ` ${match} `);
console.log(replaced);

如果您只是需要做一些简单的事情,您也可以只使用 $n 值(</code>、<code> 等)根据所选组(括号组)。

const original = 'a1b2c';
const replaced = original.replace(/([^a-z])/gi, '  ');
console.log(replaced);

你可以检查这个link

的替换功能

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace