2013-08-29 2 views
1

하나 이상의 하이픈이 포함 된 모든 텍스트를 스팬에 포함 시키려고합니다. 그래서 줄 바꿈이없는 CSS를 추가 할 수 있습니다. 규칙. 불행히도 나는 이것을 어떻게 달성해야할지 모른다. 어떤 아이디어/힌트도 크게 감사 할 것입니다. 감사!jQuery/javascript : 문자를 찾고 단어를 포함하는 단어를 포함합니다.

예 :

((\w+-)+\w+)(?![^<]*\>) 

((\w+-)+\w+) 부분은 하이픈으로 구분 된 단어와 일치 정규식이다

Before: <p>This product is ready-to-use.</p> 
    After: <p>This product is <span class="nbr">ready-to-use</span>.</p> 
+0

글쎄, 이미 정규식으로 질문 태그. ['string.replace()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)를 살펴보십시오. – Jerry

+1

아무도 당신을 위해 그것을 쓸 것입니다. 정규 표현식 등을 확인하십시오. 문제와 관련된 구체적인 질문으로 돌아와서 이미 시도한 것을 알려주십시오. – BenM

+0

은 전체 작업을하지 않고 특정 문제를 해결하기위한 것입니다. –

답변

2

다음 정규식 트릭 않습니다. (?! 뒤에 오는 부분은 표현식 앞에 >이오고 그 앞에 <이 있는지 확인합니다. 이것은 html 태그 (예 : <div class="style: margin-left">) 내에서 하이픈으로 구분 된 단어를 피하기위한 것이므로 margin-left과 일치하지 않을 수도 있습니다.

text.replace(/(((\w+-)+\w+)(?![^<]*\>))/m, '<span class="nbr">$1</span>'); 
+0

+1은 html 태그 문제를 해결합니다. – snakile

+0

위대한, 고마워. 이제 정규 표현식을 만들 수 없기 때문에 나는 어리 석다. 아마도 또 다른 힌트 일까? jQuery ('. mytext'). 각 (function() { var curTxt = jQuery (this) .html(); var newTxt = curTxt.replace ('((\ w + -) + \ w +) (?! [^ <]*\>) ',' $ 1 '); jQuery (this) .html (newTxt); }); –

+0

Javascript에서 사용하는 방법을 보여주기 위해 기능 코드를 추가했습니다. 위 참조. – crazybob

0
String text = "<p>This product is ready-to-use.</p>"; 
    text = text.replaceAll("(\\w+-(\\w+-?)+)", "<span class=\"nbr\">$1</span>"); 
    System.out.println(text); 
+2

실제로 이것은 Java가 아닌 JavaScript로 수행되어야합니다. – undefined

2

내가 몇 시간 전에 LIB를 썼다 : 당신이 그룹으로 일치하는 값을 캡처하는 정규 표현식 주위에 괄호를 추가 또한 원시 문자열을 사용하고있는 자바 스크립트에서 정규식을 사용하기 위해서는

. DOM 텍스트 노드에서 작동하므로 정규식을 사용하여 HTML을 구문 분석하지 않아도됩니다 (가능하지 않음).

https://github.com/prinzhorn/linguigi

var ling = new Linguigi(); 

ling.eachToken(/[\w-]+/, true, function(token) { 
    return '<span class="nbr">' + token + '</span>'; 
}); 

당신은 더 나은 귀하의 요구에 일치하는 정규 표현식을 사용할 수 있습니다.

관련 문제