2017-12-27 15 views
1

다음 표현식의 다양한 공식을 시도했으며 아래에서 가장 성공했습니다. 본질적으로, 그것을 .match()에 연결하고 문장을 시작하거나 문장 양쪽에 공백을 넣거나 문장을 끝내는 모든 단어를 걸러 내고 싶습니다. 예를 들어, "이 질문은 구멍이 있습니다." "이" "있는"및 "구멍있는"을 원하지만 "보어"또는 "이"의 중간에있는 "또는"이 아닌 "이 질문은" ". 나는 문장, 닻 꼬리표, p 꼬리표, 등등에 적용되고 있기 때문에 느슨하게 "문장"을 사용하고있다.Regex Javascript : 공백으로 둘러 쌀 수있는 단어 전체를 캡처하는 방법

나는 모든 단어를 얻을 수 있었지만 나는 모든 단어를 얻지 못했다. 좋아. 예를 들어 "and"는 공백으로 둘러싸인 문장의 중간에있는 것에도 불구하고 "the"가 선택 되어도 건너 뜁니다. 세련미에 대한 생각?

var exp = /\band|\bthe|\bor|\bwhich|\bon|\babout|\bmovies|\btomatoes|\breddit|\bplayed/gi; 
+0

당신이 생각하기에 픽업하지 않는 단어를 포함하여 구체적인 예를 보여줄 수 있습니까? – freginold

+0

나는 단지 이전의 코멘트를 시도하고 있었다. 예를 들어 보겠습니다. – Ryan

+3

시작 부분의 설명이 예상 결과와 일치하지 않습니다. 아마도, 당신은 당신이 가진 대안을 포함하는 단어와 일치하도록'/ \ w * (?:와 | wordshere) \ w */gi'를 원할 것입니다. [this ** ** JSFiddle **] (https://jsfiddle.net/z4q3q3bh/) –

답변

2

"또는 공백으로 둘러싸인되지 않을 수있다"요구 사항은 당신도 (는 무관하다)의 공백을 확인 할 필요가 없습니다. 당신이하는 일은 당신의 목록에있는 대안들을 포함하고있는 단어를 매치하는 것입니다.

사용

var exp = /\w*(?:and|the|or|which|on|about|movies|tomatoes|reddit|played)\w*/gi; 
 
var s = "This question is a bore,"; 
 
console.log(s.match(exp));

regex demo

non-capturing group 일치 0+ 단어 문자의 양쪽 끝에 여기

, \w* (ASCII 문자, 숫자 또는 _ 문자)를 참조하십시오.