문자열에 공백뿐만 아니라 문자 및 공백이 포함되어 있는지 어떻게 확인할 수 있습니까?


134

문자열에 공백 만 포함되어 있는지 확인하는 가장 좋은 방법은 무엇입니까?

문자열은 문자를 포함 할 수있다 결합 공백과를,하지만 단지 공백을.

답변:


294

공백 만 있는지 확인하기 위해 전체 문자열을 검사하는 대신 공백이 아닌 문자가 하나 이상 있는지 확인하십시오 .

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

7
myString이 null 값이되도록주의하십시오. 다음과 같이 true를 반환합니다. /\S/.test(null) == true
Dilshod Tadjibaev가

6
이 답변의 많은 정규 표현식이 있습니다! 이것은 js에서 물건을 감지하는 기본 방법이 없다는 것을 의미합니까? 문자열이 없습니까? 기본 트림도 없습니까?
JonnyRaa

4
@JonnyLeeds 정규 표현식은 js에서 구문을 지원하기 때문에 실제로 제공되는 유틸리티 메소드보다 더 기본적이라고 말할 수 있습니다.)
Ricardo van den Broek

38

브라우저가 trim()기능을 지원하는 경우 가장 간단한 답변

if (myString && !myString.trim()) {
    //First condition to check if string is not empty
    //Second condition checks if string contains just whitespace
}

오늘날 IE 8이 RIP 인 경우 이는 기본 구현에 의존하는 성능면에서 가장 깨끗하고 효율적인 솔루션입니다. 그리고 탭과 줄 바꿈이 올바르게 작동합니다.
Alexander Abakumov

35
if (/^\s+$/.test(myString))
{
      //string contains only whitespace
}

1 개 이상의 공백 문자에 대해이 검사는, 당신이 경우에도 다음 교체 빈 문자열과 일치하는 +과를 *.


18

jQuery를 사용하는 경우 더 간단합니다.

if ($.trim(val).length === 0){
   // string is invalid
} 

1
줄 바꿈과 탭에서도 작동하지만 위의 정규 표현식 예제는 공백 이외의 것을 찾지 않기 때문에 아닙니다. 비록 정규식 지식이있는 사람은 검색에 탭 / 줄 바꿈을 포함하는 정규식을 만들 수 있다고 확신합니다.
Kate

val에 공백이 할당되면 작동하지 않습니다 (제 경우에는 4 칸).
user1451111

7

이 정규식에 대해 문자열을 확인하십시오.

if(mystring.match(/^\s+$/) === null) {
    alert("String is good");
} else {
    alert("String contains only whitespace");
}

1
내가 질문을 읽는 방식은 문자열이 / only / 공백이 아닌 한 / any / 공백이 허용된다는 것입니다. 문자열이 비어 있으면 어떻게해야할지 모르겠으므로 nickf의 대답이 여전히 낫습니다.
Ian Clelland

1
if (!myString.replace(/^\s+|\s+$/g,""))
  alert('string is only whitespace');

0

문자열 중간에 공백을 허용하려고 할 때 사용했던 정규 표현식은 처음이나 끝이 아닙니다.

[\S]+(\s[\S]+)*

또는

^[\S]+(\s[\S]+)*$

그래서 나는 이것이 오래된 질문이라는 것을 알고 있지만 다음과 같이 할 수 있습니다.

if (/^\s+$/.test(myString)) {
    //string contains characters and white spaces
}

또는 nickf가 말한 것을 수행하고 사용할 수 있습니다.

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

0

문자열에 공백 만 포함되어 있는지 감지하기 위해 다음 방법을 사용했습니다. 빈 문자열과도 일치합니다.

if (/^\s*$/.test(myStr)) {
  // the string contains only whitespace
}

0

이것은 빠른 해결책 일 수 있습니다

return input < "\u0020" + 1;

그건 그냥하고있어 return input < " 1"; 단지 알파벳 비교하고있다한다. 입력이 "1"보다 낮게 정렬되면 true를 반환합니다. 예 : return " asdfv34562345" < "\u0020" + 1;true로 평가됩니다.
Derek Ziemba
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.