在JavaScript中插入下划线的正则表达式
基本上,第一个字母即使是大写字母,也不应该在前面加下划线。如果大写字母没有加下划线,请在所有地方休息,然后加下划线,我尝试了很多方法。我们能用正则表达式实现这一点吗?或者我们需要函数来执行此操作吗?您可以使用在JavaScript中插入下划线的正则表达式,javascript,regex,Javascript,Regex,基本上,第一个字母即使是大写字母,也不应该在前面加下划线。如果大写字母没有加下划线,请在所有地方休息,然后加下划线,我尝试了很多方法。我们能用正则表达式实现这一点吗?或者我们需要函数来执行此操作吗?您可以使用 Thi_Issss_S_S_S_S_My_Sites 请参阅JS演示: var ss=[“thiisss\u ssmysites”,“ThisIsM\u ySites”]; 用于(ss的var s){ console.log,“=>”,s.replace(/([^)](?=[A-Z\d
Thi_Issss_S_S_S_S_My_Sites
请参阅JS演示:
var ss=[“thiisss\u ssmysites”,“ThisIsM\u ySites”];
用于(ss的var s){
console.log,“=>”,s.replace(/([^)](?=[A-Z\d])/g,“$1”);
}
我可以澄清一下,除了大写字母是第一个字符外,您希望所有大写字母前面都加下划线吗?预期的输出已为未大写的_sss、_y和再次未大写的_ites添加下划线。请尝试。拆分(/(?!^)*([A-Z])/)。筛选(布尔值)。联接(“uu”)
输入为ThiIssss\u ssmysites
或ThiIssss\u ssmysites
?@Julio输入为ThiIssss\u ssmysite我建议您添加更多测试用例,但我的解决方案现在应该很容易适应。因此,我们将字符串拆分为以(如果大写字母前后都是大写字母,请避免使用大写字母,并加入它们?@user533请看我上面的解释,它确实符合我在那里写的内容。您能告诉我\u MyS\u ite
的预期结果是什么吗?\u M\u yS\u ite,因此如果我还想要数字,例如MyS112,那么ans将是M\u y\u 1\u 1_2@user533哟你正在评论中添加更多的例子,请收集它们并在问题中发布。此外,我不明白为什么\u MyS\u ite
会导致\u M\u ysu ite
(而不是\u M\u y\u ite
)如果MyS112
会导致M_y_u 1_1_2
@WiktorStribiżew,我假设该部件会在那里,因为我还没有完全测试该部件。但是,这只是是否删除的问题。让我们保留这一点
$('#x').text( $('#x').text().replace(/(?<=[a-zA-Z])(?=[A-Z])/, '_'))
Thi_Issss_S_S_S_S_My_Sites
s.replace(/([^_])(?=[A-Z\d])/g, "$1_")