如何正则表达式,并在单词之间添加“-”?

Tia*_*ivo 4 javascript regex

更新

我一直在旧的互联网上环顾四周,看看是否有任何方法可以将其作为我正在执行的替换方法的一部分进行正则表达式: str.replace(/\w[AZ]/gm, "-")

这是正则表达式

进入这个:

这是一个正则表达式

我试图在 regex101 上乱搞,匹配一个 \w 字符后跟 [AZ] 但失败了。有什么想法吗?

ike*_*ami 7

如果第一个字符不能为大写:

var str = "thisIsARegex";
str = str.replace(/(?=[A-Z])/g, "-");
console.log(str);  // this-Is-A-Regex
Run Code Online (Sandbox Code Playgroud)

如果第一个字符可以是大写:

var str = "ThisIsARegex";
str = str.replace(/.(?=[A-Z])/g, "$&-");
console.log(str);  // This-Is-A-Regex
Run Code Online (Sandbox Code Playgroud)

或者

var str = "ThisIsARegex";
str = str.replace(/\B(?=[A-Z])/g, "-");
console.log(str);  // This-Is-A-Regex
Run Code Online (Sandbox Code Playgroud)

(@Thomas 建议的最后一个片段。)

  • `(?=...)` 可以理解为“后跟...”。它与 `...` 的不同之处在于,字符串的匹配部分不被视为匹配的一部分。例如,虽然 `"aaAaaAaa".replace(/[AZ]/g, "-")` 生成 `aa-aa-aa`,`"aaAaaAaa".replace(/(?=[AZ])/g, "-")` 产生 `aa-Aaa-Aaa` (2认同)