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

时间:2012-02-28 00:33:40

标签: javascript jquery regex trim

对于下面的html,我试图将变量设置为“oakbarrels”,将变量设置为“2011年12月25日”。我已经能够用正则表达式获得“2011年12月25日”,但我无法弄清楚如何得到其余部分。基本上我想删除“By”以及第一个“ - ”之后的所有内容:

<p class="review-rating">
         By oakbarrels
         - Dec 25, 2011
         -
         Something.com
</p>
<script>
    var thedate =  $('.review-rating').text().match(/\-\s([^\n]+)/)[1].trim();
    var from = ???
</script>

3 个答案:

答案 0 :(得分:3)

var matches = $('.review-rating').text().match(/\s*By\s+(\w+)\s*-\s*([\w, ]+)/);

jsFiddle

根据您的示例,

matches[1]将包含'oakbarrels'matches[2]将包含'Dec 25, 2011'

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

答案 1 :(得分:1)

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

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

Here's a demo.

答案 2 :(得分:0)

您需要匹配多行。

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