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

HTMLを正規表現で解析しないことをお勧めしますが、これは十分に単純なので、実行できるはずです。

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

これにより、タグの後のすべてがキャプチャ"test">され、4つの数字(例では年)で終わります。

あなたの情報はグループ1で区切られたスペースです。その後、スペースを分割して、個々の要素を試してみることをお勧めします。

正規表現で遊んでください。

于 2012-08-13T16:05:30.380 に答える
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 に答える
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('+')して連結し、+さらに文字列を空白に置き換えることができます。

values.join('+').replace(/\s/g, '+'); // to make all whitespace `+` 
于 2012-08-13T16:15:25.907 に答える