2012-08-13 4 views
4

이것은 간단하지만 정규식을 한 번도 해본 적이 없으므로 JS의 정규식 전문가가 작성한 간단한 질문 만 수행하면됩니다. (있을 수 있습니다 내가 정규식 권리가 필요 ??)자바에서 루프에서 내용을 검색하는 정규식

어떤 도움 등 luckyy1, sdf2, erere

하지만 luckyy1+october+21+1986,sdf2+september+22+1985,erere+로 필요 ... 그리고 :

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 '; 

나는대로 성공적으로 값을 가지고 감사하겠습니다.

+0

당신이 DOM을 사용할 수 있습니까? 또는 문자열에서만 html 콘텐츠입니까? –

+0

예 dom은 $ ('a')를 얻기 위해 지금까지 jquery를 사용하고 있었으므로 괜찮을 것입니다.각 (기능 (색인) { \t $ formattedText + = $ (this) .text() + $ delimeter; \t}); – Luckyy

+0

이들은 '' 태그 여야합니다. 맞습니까? – frnhr

답변

1

이 시도 :

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

DEMO

+0

감사합니다 Raminson – Luckyy

+0

@luckycool 여러분 환영합니다. – undefined

+0

어쩌면 나는 사소한 사람이긴하지만 요청한 결과가 아닙니다. – Joe

0

내가 권장하지는 않지만 parsing HTML with regex은 충분할만큼 충분히 간단합니다. "test"> 태그 뒤에 아무것도 캡처, 4 개 숫자 (귀하의 예제에서 년)에 종료됩니다

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

.

귀하의 정보는 그룹 으로 구분 된 공백입니다. 그런 다음 공간을 분할하여 개별 요소를 가지고 놀 것을 권한다.

Play with the regex.

+1

멋진 링크 David에게 감사 드리고 싶습니다. href가 항상 테스트되지는 않습니다. – Luckyy

+0

(구분 기호)에 앵커 할 것이 필요합니다. 'href' 보이지 않고? –

+0

David, href 값이 항상 "test"가 아니므로 정규 표현식에서 "test"와 일치해야합니다. – Luckyy

0

기본적으로 html 태그를 제거 하시겠습니까?

당신이 (당신의 예에서 알 수 있듯이) 각 DOM 요소에 대해 별도의 문자열을 취득하고자하는 경우 http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/에서

var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,""); 

, 당신이 jQuery를 스트립과 DOM 요소를 횡단 할 수 있습니다

이에게 시험을주십시오 각각 하나씩.

편집 :이 같은

뭔가 :

var $s = jQuery(the_string); 
var result = []; 
$s.each(function(i, item){ result.push($(item).text().replace(/(<([^>]+)>)/ig,"")); }); 
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 `+` 
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('+'); 
관련 문제