javascript正则表达式并在“之后修剪所有内容”;破折号;

javascript正则表达式并在“之后修剪所有内容”;破折号;,javascript,jquery,regex,trim,Javascript,Jquery,Regex,Trim,对于下面的html,我试图将一个变量设置为“oakbarrels”,将一个变量设置为“Dec 25,2011”。我已经能够用regex获得“2011年12月25日”,但我不知道如何获得其余的。基本上我想删除“By”和第一个“-”之后的所有内容: Oakbarres -2011年12月25日 - Something.com var thedate=$('.review rating').text().match(/\-\s([^\n]+)/)[1]。trim(); var from=???

对于下面的html,我试图将一个变量设置为“oakbarrels”,将一个变量设置为“Dec 25,2011”。我已经能够用regex获得“2011年12月25日”,但我不知道如何获得其余的。基本上我想删除“By”和第一个“-”之后的所有内容:

Oakbarres -2011年12月25日 - Something.com

var thedate=$('.review rating').text().match(/\-\s([^\n]+)/)[1]。trim(); var from=???

匹配项[1]
将包含
'oakbarrels'
匹配项[2]
将包含
'2011年12月25日'
,如您的示例所示


我还将您的
html()
更改为
text()
。HTML似乎与匹配文本无关。

首先拆分字符串。您甚至不需要正则表达式:

var parts = $('.review-rating').text().split('-');
var date  = $.trim(parts[1])
var from  = $.trim(parts[0]).substring(3);

您需要匹配多行

var text = $('.review-rating').text();
var matches = text.match(/(.+?)-\s*(.+?)(?:\n|\A)/m);
//matches[1] = oakberrels
//matches[2] = Dec 25, 2011

这更像是一个JavaScript问题,而不是一个jQuery问题。jQuery没有正则表达式引擎。同意,我已经更新了,谢谢。还有一个简短的问题:尝试在多个p标记上执行此操作,有什么想法吗?@ToddN正则表达式需要捕获的不仅仅是
\w
。太棒了,成功了。我只需要多个标记的
\w
。对于带破折号的“By”还有一个简短问题,请参见此处:@ToddN只需将字符添加到您的字符类中。
var parts = $('.review-rating').text().split('-');
var date  = $.trim(parts[1])
var from  = $.trim(parts[0]).substring(3);
var text = $('.review-rating').text();
var matches = text.match(/(.+?)-\s*(.+?)(?:\n|\A)/m);
//matches[1] = oakberrels
//matches[2] = Dec 25, 2011