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

时间:2018-08-14 08:17:45

标签: javascript regex

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

预期输出为:

Thi_Issss_S_S_S_S_My_Sites

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

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参阅JS演示

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

模式将匹配:

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

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

请参见regex demo