2013-02-16 2 views
47

일반적으로 JavaScript에서 다음 코드를 사용하여 공백으로 문자열을 분할합니다.공백으로 문자열을 분할하고 앞뒤 공백을 정규 표현식을 사용하여 단어 배열로 무시하려면 어떻게해야합니까?

"The quick brown fox jumps over the lazy dog.".split(/\s+/); 
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."] 

물론 단어 사이에 공백 문자가 여러 개있는 경우에도 물론 작동합니다. 내가 문자열의 결과 배열은 배열의 시작 및/또는 끝에 빈 문자를 포함 할 경우에 선행 또는 후행 공백이있는 문자열이있을 때

"The quick brown fox  jumps over the lazy dog.".split(/\s+/); 
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."] 

문제

입니다.

" The quick brown fox jumps over the lazy dog. ".split(/\s+/); 
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""] 

그것은 같은 빈 문자를 제거하는 간단한 작업이지만, 그 모든 가능하다면 차라리 정규 표현식 내에서이 알아서 것입니다. 누구든지이 목표를 달성하기 위해 내가 사용할 수있는 정규식을 알고 있습니까? 당신이 공백없는 비트에 더 관심이 있다면

+0

코스를위한 말. 'split'은 * mutate * it이 아닌 * split * 문자열에 사용됩니다. [JavaScript에서 문자열을 다듬는 방법?] (http://stackoverflow.com/questions/498970/how-do-i-trim-a-string-in-javascript)을 참조하십시오. – DCoder

+0

불행히도 javascript는 지원하지 않습니다 ** lookbehind ** 그리고 ** lookbehind **를 사용 했더라도 첫 번째 부분에는 공간이있을 것입니다 – Anirudha

+0

나는 그 관점에서 생각하지 않았습니다. 그 점을 지적 해 주셔서 감사합니다! – natlee75

답변

78

, 당신은 공백에서 공백이 아닌 대신 분할을 일치시킬 수 있습니다.

" The quick brown fox jumps over the lazy dog. ".match(/\S+/g); 

참고 다음 반환 null 것을 :

" ".match(/\S+/g) 

그래서 배울 수있는 가장 좋은 패턴은 다음과 같습니다

str.match(/\S+/g) || [] 
+7

조심해, '' '.match (/ \ S +/g)'는'[]'대신'null'을 반환합니다! – Andy

31

" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);

+3

제안 해 주셔서 감사합니다. JavaScript 1.8을 지원하는 브라우저가 필요하다는 것을 기억할 때까지 실제로이 경로를 찾아 갈 예정이었습니다. 대부분의 사용자에게는 문제가 없지만 JavaScript 엔진에이 기능이 포함되지 않은 Internet Explorer 7 및 8과 같은 구형 브라우저는 계속 지원됩니다. – natlee75

+4

조심해,' ''.trim(). split (/ \ s + /)'는'[ ""]'!를 돌려 준다! – Andy

9

대신 공백 시퀀스에서 분할, 당신은 어떤 공백이 아닌 일치 수 서열 :

" The quick brown fox jumps over the lazy dog. ".match(/\S+/g)