Jquery 正则表达式仅在第二次匹配后删除
我正在尝试使用jquery.replace()正则表达式执行以下操作:Jquery 正则表达式仅在第二次匹配后删除,jquery,regex,Jquery,Regex,我正在尝试使用jquery.replace()正则表达式执行以下操作: var trimmedSong = (songTitle).replace(/\-[^-]*$/g, ""); 我有歌曲标题,一些包含2个连字符(-),例如: Artist name - song title Artist name - song title - album here 我试着在2号之后把所有的东西都移除- 我尝试了以下几点: var trimmedSong = (songTitle).
var trimmedSong = (songTitle).replace(/\-[^-]*$/g, "");
我有歌曲标题,一些包含2个连字符(-),例如:
Artist name - song title
Artist name - song title - album here
我试着在2号之后把所有的东西都移除-
我尝试了以下几点:
var trimmedSong = (songTitle).replace(/\-[^-]*$/g, "");
其中songTitle是字符串
但是我得到了以下输出:
Artist name
Artist name - song title
所以,虽然它在2号工作正常-如果只有1号,它实际上不工作-关于我哪里出了问题,有什么想法或建议吗
非常感谢
Eddy您可以尝试:
var trimmedSong=(songtile).replace(songtile.match(/\-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-/)[1],“”).trim();
您可以使用
const text=['Artist name-song title','Artist name-song title-album here';
常数rx=/^(.*?-.*?-.*/);
用于(文本常量){
console.log(s,'=>',s.replace(rx,'$1');
}
这应该可以做到:
var trimmedSong = (songTitle).replace(/(-[^-]*) -.*/, '$1');
说明:
-捕获与破折号和任何非破折号匹配的组1([^-]*)
-空格、破折号和其他任何东西-.*
- 作为替换,请使用捕获组1
- 请注意,如果没有两个破折号,正则表达式将失败,并且不执行任何操作