2016-12-23 2 views
0

나는이 같은 문자열이 있습니다자바 스크립트 정규식 문자열에서 단어의 엄격한 일치

Free-coffee and coffee-free is free coffee 

내가 일치 만 혼자 단어를 교체 할 필요를 {Free}-coffeecoffee-{free}

아이디어가 free하지만 단어

Free-coffee and coffee-free is <strong>free<strong> coffee. 

나는 공간 만의와 시도 : 문자열 내부에 나쁜 단어를 표시하고 다음과 같은 HTML 태그 <strong>를 추가 이 문장 앞에 공백이 있으면 ometimes이 실패합니다.

/(\sfree\s|\sfree|free\s)/ig 

참고 : 대소 문자를 구분하지 수 있도록이 필요

여기에 내 현재 정규식입니다. 여기

그리고 코드의 예는 다음과 같습니다

var text = "Free-coffee and coffee-free is free coffee"; 
text = text.replace(/(\sfree\s|\sfree|free\s)/ig, " <strong>strong</strong> "); 

도움말 나를하시기 바랍니다.

+1

'text = text.replace (/ (^ | \ s) (무료) (?! \ S)/ig, '$ 1 $ 2')'을 사용하십시오. –

+0

@ WiktorStribiżew 이것에 감사하지만 @ RomanPerekhrest의 대답은 내가 필요로하는 것이고 나는 이것을'(^ | \ s + | \ "| \"\ '\ \ \ \ \ \ \ \ \ \ \ \ "\" | \) | (무료) (\ '| \ "| \"| \ "| \"| \ "| \ 완벽하게 작동합니다. –

답변

4

사용하여 다음과 같은 정규식 패턴 :

var text = "Free-coffee and coffee-free is free coffee"; 
 
text = text.replace(/(^|\s)(free)(\s|$)/ig, "$1<strong>$2</strong>$3"); 
 

 
console.log(text);

(^|\s)이 - free 단어 중 하나 문자열의 시작이다 OR 공간

(\s|$) 앞에 보장 - free을 보장합니다 단어가 문자열의 끝에 있거나 OR 다음에 공백이옵니다.

+0

고마워! 이 위대한 작품! 나는이 성냥을 다른 성도들도 확장하고 완벽하게 일합니다! –

+0

확장 된 코드'(^ | \ s + | \ "| \"| \ "| \ '| \"| \ |) (무료) (\'| \ "| \! \ '| \ "| \"| \; | \ : | \? | \! | \. | \, | \ s + | $)' –

+0

@ IvijanStefanStipić – RomanPerekhrest