Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中插入下划线的正则表达式_Javascript_Regex - Fatal编程技术网

在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_")