2012-05-16 5 views

답변

2

예, 단지 .match() :

var resultarray = "The quick brown #fox jumped over the #reallyBigFence." 
    .match(/#([a-z0-9]+)/gi); 

(정규 표현식은 전역 플래그를 가지고 있기 때문에) 아무것도 발견되지 않는 경우는 true, 그렇지 않은 경우는 null을 찾을 문자열의 배열을 반환합니다 경기 방법. 그러나 위의 결과는 ["#fox","#reallyBigFence"]이되므로 캡쳐 그룹이 아닌 전체 일치하는 문자열을 반환합니다. 자바 스크립트 Lookbehind을 모르는, 당신은`/`/ # ([^ \ S] +)/'또는 (+ w \)`/ #을 사용하는

if (resultarray) // !== null 
    for (var i=0; i<resultarray.length; i++) 
     resultarray[i] = resultarray[i].substr(1); // remove leading "#" 
+1

그것은 더 좋을 수도로 나중에 그것을 해결하기 위해 필요합니다 단어의 유효한 문자는'a-z0-9'가 아닌 하이픈과 다른 문자를 포함 할 수 있기 때문입니다. – RobG

+0

@RobG'/ # (\ w +) /'가'# 게으름 뱅이'# "게으른 개를 뛰어 넘어서" – ajax333221

+0

예,'\ w'는 단어 문자와 일치하지만 RegExp는 생각하지 않습니다 하이픈은 단어에 속합니다. :-(나는 단지/# ([\ w -] +)/g' 또는 그와 비슷한 것으로 명시 적으로 정의하지 않았기 때문에 원하는 것을 얻기 위해 패턴을 가지고 놀 필요가 있다는 것을 지적했다. – RobG

관련 문제