Javascript 不知道我的正则表达式哪里出错了

Javascript 不知道我的正则表达式哪里出错了,javascript,regex,replace,bookmarklet,Javascript,Regex,Replace,Bookmarklet,我正在编写一个Javascript书签,作为工作的一个辅助项目(不要以编写代码为生,我是一个初学者) 它扫描了cnn.com的一份记录,找出了现场嘉宾的姓名和头衔,不包括从磁带上播放的名字和头衔 为此,我抓取站点,然后使用replace()和regex删除BEGIN VIDEO CLIP和END VIDEO CLIP之间的文本,然后使用另一个正则表达式扫描与名称、标题:格式匹配的所有内容。它在一些成绩单上就像一个符咒,而在其他成绩单上却失败得很惨。这是我的密码: (function () {

我正在编写一个Javascript书签,作为工作的一个辅助项目(不要以编写代码为生,我是一个初学者)

它扫描了cnn.com的一份记录,找出了现场嘉宾的姓名和头衔,不包括从磁带上播放的名字和头衔

为此,我抓取站点,然后使用
replace()
和regex删除
BEGIN VIDEO CLIP
END VIDEO CLIP
之间的文本,然后使用另一个正则表达式扫描与
名称、标题:
格式匹配的所有内容。它在一些成绩单上就像一个符咒,而在其他成绩单上却失败得很惨。这是我的密码:

(function () {
    var webPage = document.body.innerText;
    var tape = webPage.replace(/(BEGIN VIDEO CLIP)([\s\S]*)(END VIDEO CLIP)|(BEGIN VIDEOTAPE)([\s\S]*)(END VIDEOTAPE)/g, "");
    var searchForGuests = /[A-Z ].+,[A-Z0-9 ].+:/g;
    var guests = tape.match(searchForGuests).join("; ");
    alert("Guests: " + guests)
})();
例如,当应用于时,它只会提醒主机名(Piers Morgan),即使有多个实时来宾。问题出在我的正则表达式上吗?我一直在用Regexr进行测试,但据我所知,在Javascript中没有使用任何非法的东西


它应该适用于以下任何一个成绩单:。

这里的主要问题可能是贪婪的
[\s\s]*
,这将匹配并删除太多内容。尝试改用
[\s\s]*?
。在
*
之后添加的
使其尽可能少地匹配(而不是尽可能多地匹配)。

搜索guests
正则表达式中,尝试
^([A-Za-z0-9,]+(?=:)

如果您的文本为:

TOM COUGHLIN, NFL COACH: Preparation is the key to success. 
MORGAN: Plus he's worn out his Oscar welcome but she's Hollywood's golden girl, Kristin Chenoweth. 
它将返回匹配:

TOM COUGHLIN, NFL COACH
MORGAN

首先,+匹配任何东西,我猜您希望匹配
/[A-Z]+,[A-Z0-9]+:/g
类似的东西,因为它们都在CAP中并使用,我只希望在名称第一次出现时匹配完整的标题。而且,有时标题有不止一个逗号。。。迈克尔·乔丹,NBA球员,芝加哥公牛队。