자바 스크립트 정규식 공백 제거


89

그래서 문자열에서 공백을 제거하기 위해 JQuery 용 작은 플러그인을 작성하고 있습니다. 여길 봐

(function($) {
    $.stripSpaces = function(str) {
        var reg = new RegExp("[ ]+","g");
        return str.replace(reg,"");
    }
})(jQuery);

내 정규식은 현재 [ ]+모든 공백을 수집하는 것입니다. 이 작품은 .. 그러나 그것은 ... 내 입에 좋은 맛을 떠나지 않아 나는 또한 시도하지 [\s]+하고 [\W]+있지만, 어느 쪽도했다 ..

공백 만 검색하는 더 나은 (더 간결한) 방법이 있어야합니다.

답변:


229

리터럴 표기법과 \s문자 클래스 를 사용하는 것이 좋습니다 .

//..
return str.replace(/\s/g, '');
//..

문자 클래스를 사용하는 \s것과 단지를 사용하는 것 사이에는 차이가 있습니다 . ' '예를 들어 훨씬 더 많은 공백 문자와 일치합니다. 검색 하면 ASCII 32 공백 만 대체됩니다.'\t\r\n'' '

RegExp당신이 할 때 생성자에 유용 구축 당신이 그것을 필요하지 않습니다이 경우, 동적 패턴.

더욱이, 당신이 말했듯이, 생성자 "[\s]+"와 함께 작동하지 않았습니다 RegExp. 그 이유는 문자열을 전달하기 때문입니다. 백 슬래시를 "이중 이스케이프"해야합니다. 그렇지 않으면 문자열 내부에서 문자 이스케이프로 해석됩니다 (예 : "\s" === "s"(unknown 탈출)).



1
str.replace(/\s/g,'')

나를 위해 작동합니다.

jQuery.trim IE에 대해 다음과 같은 해킹이 있지만 영향을받는 버전은 확실하지 않습니다.

// Check if a string has a non-whitespace character in it
rnotwhite = /\S/

// IE doesn't match non-breaking spaces with \s
if ( rnotwhite.test( "\xA0" ) ) {
    trimLeft = /^[\s\xA0]+/;
    trimRight = /[\s\xA0]+$/;
}

1

문자열의 모든 공백 제거

// Remove only spaces
`
Text with spaces 1 1     1     1 
and some
breaklines

`.replace(/ /g,'');
"
Textwithspaces1111
andsome
breaklines

"

// Remove spaces and breaklines
`
Text with spaces 1 1     1     1
and some
breaklines

`.replace(/\s/g,'');
"Textwithspaces1111andsomebreaklines"

1

생산 중 및 줄 바꿈 작업

이는 여러 앱에서 추가 공백 / 반환 등을 제거하여 사용자 생성 콘텐츠를 정리하는 데 사용되지만 공백의 의미는 유지합니다.

text.replace(/[\n\r\s\t]+/g, ' ')

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.