用于在 JavaScript 中插入下划线的正则表达式


<div id='x'>ThiIssss_SSSSMySites</div>
$('#x').text( $('#x').text().replace(/(?<=[a-zA-Z])(?=[A-Z])/, '_'))

预期的输出为:

Thi_Issss_S_S_S_S_My_Sites

基本上第一个字母,即使是大写字母,也不应该在前面加上下划线。在找到大写字母的地方休息所有地方,如果没有下划线,然后预置,我尝试了很多方法。我们可以通过正则表达式实现这一点吗?还是我们应该需要函数来做到这一点?

您可以使用

s.replace(/([^_])(?=[A-Zd])/g, "$1_")

查看 JS 演示:

var ss = ["ThiIssss_SSSSMySites", "ThisIsM_M_ySites"];
for (var s of ss) {
console.log(s, "=>", s.replace(/([^_])(?=[A-Zd])/g, "$1_"));
}

模式将匹配:

  • ([^_])- 第 1 组:除_以外的任何字符
  • (?=[A-Zd])- 后跟大写字母或数字。

替换是$1_,对存储在组 1 中的值的反向引用和一个_字符。

请参阅正则表达式演示

相关内容

最新更新