변수가 null인지 빈 문자열인지 또는 JavaScript에서 모두 공백인지 확인하는 방법은 무엇입니까?


97

변수가 null인지 또는 모든 빈 공간이 있는지 또는 공백 ( "")인지 확인해야합니다.

다음이 있지만 작동하지 않습니다.

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}

다음을 수행하면 작동합니다.

if (addr) {

}​

내가 필요한 것은 C # 메서드와 같은 것 String.IsNullOrWhiteSpace(value)입니다.


3
정말 의미 has *any* empty spaces합니까? 아니면 의미 is all empty spaces합니까?
Madbreaks

1
undefined는 어떻습니까?
CodeToad 2015 년

답변:


135

를 더 가깝게 모방 IsNullOrWhiteSpace하지만 null, 빈 또는 모든 공간 만 감지 하는 비 jQuery 솔루션 :

function isEmptyOrSpaces(str){
    return str === null || str.match(/^ *$/) !== null;
}

...그때:

var addr = '  ';

if(isEmptyOrSpaces(addr)){
    // error 
}

* 편집 * op는 구체적으로 다음과 같이 말합니다.

var 가 null인지 또는 빈 공간이 있는지 또는 그 문제에 대해 blank인지 확인해야 합니다.

따라서 "공백"은 null, 공백 또는 공백 이상을 포함하지만 내 대답은 op의 특정 질문에 대답하기위한 것입니다. 예를 들어 op는 탭과 같은 것을 포착하지 않을 수 있기 때문에 중요합니다.


63
공백은 탭, 다른 종류의 공백 등을 포함 할 수도 있습니다. /^\s*$/이를 포착 하는데도 사용 합니다.
부여

2
@Grant 나는 op가 "var가 null인지 또는 빈 공간이 있는지 또는 그 문제에 대해 단지 공백인지 확인 해야하는지 확인해야하기 때문에 의도적으로 그렇게하지 않았습니다" .
Madbreaks

5
match () 대신 test ()를 사용하는 것은 어떻습니까? 반환 str === null || (/ ^ * $ /). test (str);
Mario Levrero 2014 년

1
@MarioLevrero 나는 그것을 좋아한다! test내가 기억하는 것처럼 더 빠릅니다.
Madbreaks 2014 년

10
@Madbreaks는 "내가 필요한 것은이 C # 메서드와 같은 것입니다 : String.IsNullOrWhiteSpace"라고 말했습니다. 이 방법은 탭을 공백으로 처리합니다.
subsci

24
if (addr == null || addr.trim() === ''){
  //...
}

null비교도 잡을 것입니다 undefined. false통과 하고 싶다면 을 사용하십시오 !addr. 이전 버전의 브라우저 호환성을 addr.trim()위해 $.trim(addr).


1
"거짓도 전달하려면! addr을 사용하십시오." - addr0 이면 분석 합니다.
Madbreaks

왜 첫 번째 ==와 두 번째가 일치 ===합니까?
최대

19

당신이 사용할 수있는 if(addr && (addr = $.trim(addr)))

이것은 addr검사를 수행 할 때 그냥 무시하는 대신 실제로 외부 공백을 제거하는 장점이 있습니다 .

참조 : http://api.jquery.com/jQuery.trim/


2
물론 op 공백을 제거하고 싶다고 가정 합니다. :)
Madbreaks 2012

1
addr예를 들어 정수로 초기화 하면 대답은 거짓 긍정을 반환합니다 .
Madbreaks

더 많은 정보가 없으면 var가 null / undefined가 아닌 경우 항상 문자열이라고 가정합니다.
ThiefMaster

1
Op는 "변수가 있는지 확인하십시오 ..."라고 말했고 그의 예제는 변수가 문자열이라는 것을 보여 주었지만 이것이 아이디어를 보여주는 예제 일 뿐이라고 가정합니다.
Madbreaks

5
isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}

2
기존 답변을 복제 할 필요가 있습니까? 아니면 관련 차이를 만드는 이전 답변을 변경 한 적이 있습니까?
Nico Haase

4

다음과 같은 고유 한 방법을 만들 수 있습니다.

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

    return value.replace(/\s/g, '').length == 0;
}

1
\s공백 이상의 일치
Madbreaks

4

오래된 질문이지만 더 간단한 대답을 거부한다고 생각합니다.

간단하게 다음을 수행 할 수 있습니다.

var addr = "  ";

if (addr && addr.trim()) {

    console.log("I'm not null, nor undefined, nor empty string, nor string composed of whitespace only.");

}

1
그럴까요 addr && addr.trim()? 싱글 &에서는 작동하지 않았지만 &&.
markv12

3

공백을 확인할 때 c # 메서드는 유니 코드 표준을 사용합니다. 공백에는 공백, 탭, 캐리지 리턴 및 기타 인쇄되지 않는 많은 문자 코드가 포함됩니다. 따라서 다음을 사용하는 것이 좋습니다.

function isNullOrWhiteSpace(str){
    return str == null || str.replace(/\s/g, '').length < 1;
}

Op는 목표가 공백 이 아닌 공백 을 확인하는 것이라고 명시합니다 .
Madbreaks

5
Op는 "내가 필요한 것은 다음과 같은 C # 메서드입니다 : String.IsNullOrWhiteSpace (value)"라고 말합니다. 그리고 공백을 확인하는 경우 함수 이름을 isNullOrWhiteSpace로 지정하지 말고 대신 IsNullOrEmtpy로 이름을 지정하십시오.
Joao Leme 2013-07-11

C # 메서드 문자열이 null인지 또는 일련의 공백인지 확인하기 위해 작동 합니다. Op는 "같은"것을 원했지만 특별히 공백을 확인하기를 원했습니다.
Madbreaks


0

이것을 시도하십시오

/**
  * Checks the string if undefined, null, not typeof string, empty or space(s)
  * @param {any} str string to be evaluated
  * @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
    return str === undefined || str === null
                             || typeof str !== 'string'
                             || str.match(/^ *$/) !== null;
}

이렇게 사용할 수 있습니다

isStringNullOrWhiteSpace('Your String');


0
function isEmptyOrSpaces(str){
    return str === null || str.match(/^[\s\n\r]*$/) !== null;
}

0

이것을 시도 할 수 있습니다.

do {
   var op = prompt("please input operatot \n you most select one of * - / *  ")
} while (typeof op == "object" || op == ""); 
// execute block of code when click on cancle or ok whthout input
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.