2010-11-26 8 views
1

기본적으로 하나 이상의 공백 문자가 허용되도록하는 preg_match가 필요합니다 (둘 이상의 단어가있는 경우).PHP preg_match는 단어 사이에 하나의 공백 문자 만 허용해야합니다.

내 기존 규칙은 다음과 같습니다

(^[A-Za-z\s]+$) 

감사합니다.

+0

문장 사이에 여러 개의 공백을 허용 할 수있는 경우가 없으면 * 모든 * 공백을 하나의 공백으로 대체하고 단어와의 근접 거리를 걱정하지 않아도됩니다. 예 : '/ {SPACECHAR} +/{SPACECHAR} /'. (나는 빈 공간 대신에 '{SPACECHAR}'을 사용하여 의미를 분명히했습니다.) – dnagirl

답변

4

그것은 당신이 "단어"가 무슨 뜻인지 따라,하지만 당신은 당신이 시도 할 수 AZ에 편지를 의미 또는 AZ 가정 : \s하지이 공백 문자를 의미하지

^[a-zA-Z]+([a-zA-Z]+)*$ 

하는 것으로 - 그것은 어떤 의미 공백, 새 줄을 포함합니다.

+0

이것은 작동합니다! 감사. – GSTAR

1

난 당신이 넣어 당신의 경기에 발행 수의 수를 지정하는 생각 즉, {1} {1,5}

^[... 그래서 뭔가 같은 (단 1 또는 1에서 5 사이의 포함에 맞게) A-ZA-Z] +는 ({1}) 하나의 공간 후에 하나 개 그 후 공간 아닌 공간에 어떤 단어를 검색합니다 $

+1

또한 \ w 플래그가 단어와 일치하지 않습니까? – billythekid

+1

반복 할 필요가 없으면 작동하지만 정규 표현식에서는 중요하지 않습니다. 모든 정규식은 한 줄에 한 문자 씩 일치한다고 가정합니다. 즉, {1}은 중복됩니다. – austinbv

+0

ㅎ, 고마워! 정말 알아두면 편리합니다. – billythekid

2
/^[\S]+\s?[^\s]?/i 

/\s?\S+\s/ 

모든 문자를 검색합니다 공백이있는 쪽 또는 종료.

+0

첫 번째 정규식이 작동하지만 한 단어 만 (앞뒤 공백없이) 사용하면 실패합니다. – GSTAR

+0

지금 편집 해보세요. – austinbv

+0

'/^[\ S] + \ s? [^ \ s]? /'는 공백 문자가 아닌 하나 이상의 문자로 시작하는 문자열과 일치합니다. * 공백 문자 뒤에 공백 문자가 오면 '\ s?'가 일치하고, *가 * 공백 문자가 아닌 경우 '[^ \ s]?'와 일치합니다. 그러나 정규 표현식 중 어느 것도 둘 이상의 연속 된 공백을 방지 할 수는 없습니다. –

관련 문제