对于下面的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>
答案 0 :(得分:3)
var matches = $('.review-rating').text().match(/\s*By\s+(\w+)\s*-\s*([\w, ]+)/);
根据您的示例, 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);
答案 2 :(得分:0)
您需要匹配多行。
var text = $('.review-rating').text();
var matches = text.match(/(.+?)-\s*(.+?)(?:\n|\A)/m);
//matches[1] = oakberrels
//matches[2] = Dec 25, 2011