javascript正则表达式并在“之后修剪所有内容”;破折号;
对于下面的html,我试图将一个变量设置为“oakbarrels”,将一个变量设置为“Dec 25,2011”。我已经能够用regex获得“2011年12月25日”,但我不知道如何获得其余的。基本上我想删除“By”和第一个“-”之后的所有内容: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=???
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