2009-06-20 3 views
0

텍스트 영역이 있습니다. 나는 그것이 자바 스크립트에서 최소한 공백이 아닌 공백 문자 3 개를 포함하고 있는지 확인하려고하는데, 그렇다면 PHP에서 게시 된 메시지를 다시 검사해야합니다.정규식에는 공백이 아닌 문자가 필요합니다.

일단 PHP에서 작동하게되면 자바 스크립트에 동일한 정규 표현식을 사용할 수 있다고 생각합니다. 그러나, 공백이 그것을 엉망으로 만들고있다.

다음은 PHP에서 작동하지 않는 이유를 이해가 안가 : 그이어야 3 "공백이 아닌 문자를"요구처럼 나에게

$msg = mysql_real_escape_string($_POST["msg"]); 

if(!preg_match('/[\S]{3,}/',$msg)){ 
    echo 'too short'; 
} 

것 같습니다. 그러나 내가 입력하면 :

f f f 

그것은 너무 짧다. 및

f 

d 

이 통과합니다. "g"플래그를 추가하고 정규 표현식을 둘러싼^및 $로 재생하려고했습니다. 어떤 조언

에 대한

감사

답변

1

귀하의 정규식 3 이후 공백이 아닌 문자와 일치합니다.

는 일치 아무것도에 의해 분리 된 세 공백이 아닌 문자, 다음

/(\S.*){3,}/ 

여러 줄에 걸쳐 유효성 검사를 수행하기를의 s 수정 추가 : 당신은 또한 유효성 검사를 수행해야

/(\S.*){3,}/s 

전에 mysql_real_escape_string으로 전화하십시오. 귀하의 예에서 두 번째 문자열은 f\r\nd 또는 f\nd으로 먼저 변환됩니다. 3 개의 연속 된 공백 문자가 포함되었습니다! 보시다시피, 이것은 검증을 실패하게 만듭니다.

+0

고마워요! 몇 시간 만 구해 줬어. –

+0

나는 그것을 시험해보고 줄 바꿈이 작동하지 않는다는 것을 알아 차렸다. 나는 당신의 답장을 다시 확인했고, 지금은 .... 고마워, 나는 regexp를 빨아 먹는다. –

+0

@Whosane, 당신이 여기 새로 왔던 것 같아서이 말을합니다. 몰프의 대답이 당신에게 좋은 것이라면 대답의 왼쪽에있는 투표 번호 아래의 눈금을 클릭하십시오. – nik