Javascript 如何在替换分隔符的同时,将camelCase标识符字符串转换为带有空格分隔的单词的字符串?

Javascript 如何在替换分隔符的同时,将camelCase标识符字符串转换为带有空格分隔的单词的字符串?,javascript,regex,Javascript,Regex,我已经研究了“”和几个相关问题的答案,下面的代码将生成字符串 单词双字一个三字的大写单词 不幸的是,有必要在输入中出现{TOKEN}的地方使用分隔符。理想情况下,结果将使用逗号分隔符 单词,双字,三字,大写单词 有没有办法用一个正则表达式来实现这一点?(正则表达式替换可以产生一个带前导逗号的字符串。) 以下是我目前掌握的代码: const regex = /({TOKEN})|([A-Z])(?=[A-Z][a-z])|([a-z])(?=[A-Z])/g; const str = '{TOKE

我已经研究了“”和几个相关问题的答案,下面的代码将生成字符串

单词双字一个三字的大写单词 不幸的是,有必要在输入中出现
{TOKEN}
的地方使用分隔符。理想情况下,结果将使用逗号分隔符

单词,双字,三字,大写单词 有没有办法用一个正则表达式来实现这一点?(正则表达式替换可以产生一个带前导逗号的字符串。)

以下是我目前掌握的代码:

const regex = /({TOKEN})|([A-Z])(?=[A-Z][a-z])|([a-z])(?=[A-Z])/g;
const str = '{TOKEN}NormalWord{TOKEN}DoubleWord{TOKEN}ATripleWord{TOKEN}UPPERCaseWord';
const subst = '$2$3 ';

const result = str.replace(regex, subst);

它看起来不漂亮,但你可以像这样使用它

const regex=/(^(?:{TOKEN})+|(?:{TOKEN})+$){TOKEN}|([A-Z])(?=[A-Z][A-Z])|([A-Z])(?=[A-Z])/g;
const str='{TOKEN}NormalWord{TOKEN}DoubleWord{TOKEN}ATripleWord{TOKEN}UPPERCaseWord';
const result=str.replace(正则表达式,(g0、g1、g2、g3)=>
g1?“:g2?`${g2}`:g3?`${g3}`:”,“
);

console.log(结果);//=>普通字、双字、三字、大写字它看起来并不漂亮,但你可以像这样使用它

const regex=/(^(?:{TOKEN})+|(?:{TOKEN})+$){TOKEN}|([A-Z])(?=[A-Z][A-Z])|([A-Z])(?=[A-Z])/g;
const str='{TOKEN}NormalWord{TOKEN}DoubleWord{TOKEN}ATripleWord{TOKEN}UPPERCaseWord';
const result=str.replace(正则表达式,(g0、g1、g2、g3)=>
g1?“:g2?`${g2}`:g3?`${g3}`:”,“
);
console.log(结果);//=>普通字、双字、三字、大写字