这看起来很简单,但我从来没有做过正则表达式,所以只是来自JS的正则表达式专家的一个简单问题。
var str = '<a href="test">luckyy1</a> born on october 21, 1986 <a href="test">sdf2</a> born on september 22, 1985 <a href="test">erere</a> born on November 23, 1984 ';
我成功获得了值:luckyy1
,sdf2
,erere
但我需要luckyy1+october+21+1986,sdf2+september+22+1985,erere+
......等等(可能我需要正则表达式吗?)
任何帮助都将不胜感激。
答案 0 :(得分:1)
试试这个:
str = $("<div/>").html(str).text();
str = str.replace(/,?/g, '').replace(/born on?/g, '').split(' ').join('+')
答案 1 :(得分:0)
虽然我建议不要parsing HTML with regex,但这足够简单,你应该可以做到。
"test"\s*>(.+?\d{4})
这将捕获"test">
标记之后的任何内容,并以4个数字结尾(示例中的年份)。
您的信息在 1 组中以空格分隔。之后,我建议拆分空格以使您的个人元素可以玩。
答案 2 :(得分:0)
基本上,你想剥去html标签吗?
尝试一下:
var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");
来自http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
如果您希望为每个dom元素获取单独的字符串(如您的示例所示),您可以使用jQuery横切DOM元素并分别剥离每个元素。
修改强>
这样的事情:
var $s = jQuery( the_string );
var result = [];
$s.each(function(i, item){ result.push( $(item).text().replace(/(<([^>]+)>)/ig,"") ); });
答案 3 :(得分:0)
严格遵循您提供的标记,您可以执行以下操作:
var values = $('<div><a href="test">luckyy1</a> born on october 21, '+
'1986 <a href="test">sdf2</a> born on september 22, 1985 ' +
'<a href="test">erere</a> born on November 23, 1984</div>')
.contents()
.map(function(){
return $(this).text().replace('born on', '').trim();
}).get();
console.log(values); // ["luckyy1", "october 21, 1986", "sdf2", "september 22, 1985", "erere", "November 23, 1984"]
我改变的只是在字符串中添加了一个包裹div
。然后,您可以使用values.join('+')
连接+
,并在空格上替换更多字符串。
values.join('+').replace(/\s/g, '+'); // to make all whitespace `+`
答案 4 :(得分:0)
这是一个肮脏的解决方案,但不知何故可能会帮助你...
var str = '<a href="test">luckyy1</a> born on october 21, 1986 <a href="test">sdf2</a> born on september 22, 1985 <a href="test">erere</a> born on November 23, 1984 ';
var r= /<a[^>]*>(.*)<\/a> born on ([\w]*) ([\d]*), ([\d]*) <a[^>]*>(.*)<\/a> born on ([\w]*) ([\d]*), ([\d]*) <a[^>]*>(.*)<\/a> born on ([\w]*) ([\d]*), ([\d]*)/;
r.exec(str).splice(1).join('+');