2012-09-07 6 views
1

내가 문자열에서 모든 후행 공백 및 마침표를 제거하기 오전 공백 및 기간 후행 제거하는 그래서 나는 다음 예제 중 하나했다 경우 :자바 스크립트 문자열

var string = " .. bob is a string ."; 

또는

을 내가 diddly 쪼그리고에 대한 regex 알고

"bob is a string" 

:로

var string = " . bob is a string . .."; 

그들은 끝날 것

str.replace(/^[\s+\.]|[\s+\.]$/g, ""); 

사람이 어떻게이 문제를 말해 줄 수 :

str.replace(/^\s+|\s+$/g, ""); 

나는 그것이 여전히 공백 문자를 후행 제거하지만 기간을 포함하도록 수정 시도 :하지만 난 공백 here 후행 제거하는 기능을 발견 아마 나에게 사용 된 정규식을 설명 할 수 있을까요?

답변

3
귀하의 정규식 거의 맞아

, 당신은 단지 문자 클래스 ([])의 외부 한정사 (+)을 넣어해야합니다 (문자 클래스 내에서

var str = " . bob is a string . .."; 
var stripped = str.replace(/^[\s.]+|[\s.]+$/g,""); 

이 시도

var str = " . bob is a string . .."; 
str.replace(/^[.\s]+|[.\s]+$/g, ""); 
//"bob is a string" 
+0

감사합니다. 왜'.' 문자를 이스케이프해야합니까?'.'는 거의 모든 문자와 일치합니까? –

+0

@GeorgeReith'.'는 문자 클래스 내부에 있으므로 문자 그대로 '.'를 의미합니다. 캐릭터 클래스 바깥에서 벗어나야합니다. 정규 표현식에서'+'와 같이 문자 클래스 안에 있기 때문에 한정 기호를 의미하지는 않습니다. 그렇지 않으면'+ '도 이스케이프 처리해야합니다. 문자 클래스 내에서는']','''','-', 역 슬래시와 같이 문자 클래스에 특별한 문자 만 이스케이프하면됩니다. – Esailija

0

[]) .을 이스케이프 할 필요는 없습니다. 선행 또는 후행 공백 및 마침표가 제거됩니다.