2009-12-02 4 views

답변

16

당신은 사용, 그것을위한 정규 표현식이 필요하지 않습니다 표현식은 "0 이상"이기 때문에 0 이상의 공백으로 끝나야하며, 또한 null 문자열과 일치합니다.

+2

+1 : 이것은 유지 보수/정규식을 컴파일보다 더 빨리, 그리고 더 많은 읽을 수 있습니다. –

+0

맞지만 모든 경우에 적합하지 않을 수 있습니다. 예. 패턴을 동적으로 생성하고 한 번만 사용 preg_match ($ pattern, $ str) –

+0

@Dominic : "자르기"는 "자르기"만큼 잘 작동합니다. 코딩 스타일의 문제 일뿐입니다. –

1
if(preg_match('^[\s]*[\s]*$', $text)) { 
    echo 'Empty or full of whitespaces'; 
} 

합니다^[\ S] *이 텍스트는 0 개 이상의 공백으로 시작해야 함을 의미하고 [\ S] * $ :

+0

1. 그 정규식에 일치하는 괄호가 없습니다. 2. 구획 문자도 없습니다. 3. 공백 또는 비어 있지 않은 문자열을 검사하는지 여부를 설명 할 수 있습니다. – nickf

+2

나는이 대답에 대한 모든 상향 신호를 이해하지 못한다. 그것은 너무 지나치게 길다. 다음의 정규 표현식은 똑같습니다 :'^ \ s * $'. 문자 클래스에'\ s'를 넣을 필요가 없으며 두 번 추가 할 필요가 없습니다. -1, 나부터. 미안. –

+0

내가 처음 글을 쓸 때, 그것은 정확히 당신이 말한 것이 었습니다. 나는 명확성과 nickf의 설명 요청을 위해 그것을 바 꾸었습니다. –

-1

\A\s*+\Z

+0

'\ z'는 어떨까요? '\ Z' 문서가 문자열의 끝 또는 끝에있는 줄 바꿈 앞에 일치합니다. '\ z'는 문자열의 끝에서만 일치합니다. –

0

당신은 정말 정규식

if($str == '') { /* empty string */ } 
elseif(trim($str) == '') { /* string of whitespace */ } 
else { /* string of non-whitespace */ } 
1
if (preg_match('^[\s]*$', $text)) { 
    //empty 
} 
else { 
    //has stuff 
} 

필요하지 않습니다하지만 당신은 또한

if (trim($text) === '') { 
    //empty 
} 

편집 할 수 있습니다 : 진정한 빈 일치하도록 업데이트 정규식 문자열 - 별명 (감사합니다!)

+0

첫 번째 오류는 역설적으로 빈 문자열입니다. * 일치로 변경하고 일부 구분 기호를 추가하면됩니다. – nickf

+1

구분 기호가 없습니다. 귀하의 정규 표현식은 그것들을 필요로합니다. – Tadeck

8

트리밍 된 문자열의 길이를 확인하거나 트리밍 된 문자열을 빈 문자열과 비교하는 것이 가장 빠르며 가장 쉽게 읽을 수 있지만 사용하지 못할 수도 있습니다 (예 : 유효성 검사를 위해 프레임 워크를 사용할 때 정규 표현식 만 사용합니다). 아무도 다른 실제로 아직 작업 정규식을 게시되지 않았기 때문에

...

if (preg_match('/\S/', $text)) { 
    // string has non-whitespace 
} 

또는

if (preg_match('/^\s*$/', $text)) { 
    // string is empty or has only whitespace 
} 
0

다음은 문자열에 공백이 포함 된 경우, 내다 및 lookbehind 주장을 통해 정규식 검사를 다음 시작 또는 끝에 또는 문자열이 비어 있거나 공백 만 포함하는 경우 :

무효 (내부 ") :

"" 
" " 
" test" 
"test " 

유효 (내부") :

"t" 
"test" 
"test1 test2" 
관련 문제