2013-08-21 6 views
0

나는 더글러스 크록 포드에 의해 자바 스크립트 프로그래밍 언어 시리즈를 통과하고 자신의 트림 기능이 발현 건너 온거야 :Crockford의 JavaScript Trim 기능을 해석하는 방법은 무엇입니까?

String.prototype.trim = function() { 
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); 
}; 

내가 얻을 수는 있지만, 어떻게 세계에서 작동합니까 무엇?

당신은 정규식을 통해 단계 수 expresso, 같은 도구를 잡아해야
+1

정규 표현식은 선행 및 후행 공백 사이의 문자열에 무엇이든을 분리합니다. 나는 중앙 부분의 복잡성이 필요하다고 생각하지 않지만, 내가 누락 된 약간의 미묘함이있을 수있다. * 편집 * (역 추적 등을 줄이기 위해 성능이있을 수 있습니다.) – Pointy

+0

오늘 @Pointy는 정규 표현식이라는 용어를 처음 듣는 것입니다. 이것을 지적 해 주셔서 감사합니다. – Greg

답변

1

...

^\s* - 반복

(\S*(\s+\S+)*)의 수와 라인 또는 문자열의 시작 부분에 공백, - 캡처 그룹에서 숫자 "$ 1"을 입력하십시오.

\S*(\s+\S+)*

- 공백 아무것도하지만,

(\s+\S+)* repetions

의 수 - 또 다른 캡처 그룹, 하나 이상의 반복에 공백 하나 이상의 반복과 공백 이외의 다른 찾습니다.

\s*$ - 줄 또는 문자열의 끝에있는 임의의 개수의 공백

이 프레소처럼 보이는 무엇

...

Expresso Screenshot

관련 문제