3

这看起来很简单,但我从未做过正则表达式,所以只是来自 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+......等等(也许我需要正则表达式对吗??)

任何帮助,将不胜感激。

4

5 回答 5

1

试试这个:

str = $("<div/>").html(str).text();
str = str.replace(/,?/g, '').replace(/born on?/g, '').split(' ').join('+')

演示

于 2012-08-13T16:20:36.643 回答
0

虽然我建议不要使用 regex 解析 HTML,但这足够简单,您应该能够做到。

"test"\s*>(.+?\d{4})

这将捕获"test">标签后的任何内容,并以 4 个数字结尾(在您的示例中为年份)。

您的信息在组1中以空格分隔。在那之后,我建议分割空间来让你的个人元素发挥作用。

玩正则表达式

于 2012-08-13T16:05:30.380 回答
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,"") ); });
于 2012-08-13T16:13:03.930 回答
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('+')to concat+和更多的字符串替换空格。

values.join('+').replace(/\s/g, '+'); // to make all whitespace `+` 
于 2012-08-13T16:15:25.907 回答
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('+');
于 2012-08-13T16:43:10.440 回答