Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Jquery 正则表达式仅在第二次匹配后删除_Jquery_Regex - Fatal编程技术网

Jquery 正则表达式仅在第二次匹配后删除

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).

我正在尝试使用jquery.replace()正则表达式执行以下操作:

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
  • 请注意,如果没有两个破折号,正则表达式将失败,并且不执行任何操作
您也可以使用正向查找,但并非所有浏览器都支持此功能?看见