2012-10-05 2 views
1

텍스트 입력의 유효성을 검사하려고합니다. 텍스트 필드에 공백이 있으면 실패하는 것으로 나타났습니다.Ruby on Rails : validates_format_of의 숫자 이외의 숫자

validates_format_of :role, :with => /\A[a-zA-Z]+\z/, :message => "field should only have letters" 

공백을 허용하려면 무엇을 변경해야합니까? 감사합니다

업데이트 : 텍스트 필드에 특수 문자를 허용해야으로 수 있지만, 아무것도

변경된 질문.

+0

이것은 이상, [0-9] 동등 정규 표현식 문제./A [a-zA-Z _] + \ z /와 같은 공백을 허용 할 수 있습니다. 이것은 해결책이 아니라 어떻게 수행하는지에 대한 포인터입니다. –

답변

5

그냥 당신이 (순간 a-zA-Z에) 일치하는 문자에 공간을 추가 할 수 있습니다. \s은 (탭과 줄 바꿈 포함) 어떤 공백 문자와 일치하는 것을 따라서는

/\A[a-zA-Z ]+\Z/ 

참고.

/\A[^0-9]+\Z/ 

:

업데이트

숫자를 제외한 모든, 당신은 대괄호의 시작에 캐럿 ^를 넣어 만든되는 "부정 문자 클래스"를 사용할 수 있도록하려면 또는 ("손가락"의 경우) 때문에 \d

/\A[^\d]+\Z/ 
+0

빠른 답장을 보내 주셔서 감사합니다. 나는 실제로 숫자 이외에 모든 것이 필요하다는 것을 알아 냈습니다. 그걸 어떻게 알 수 있습니까? 그래서 A-Z, a-z, \ s 그리고() * &^같은 특수 문자. 감사합니다 – Jazz

+1

문제는 없지만 답변을 업데이트했습니다. 이 변경 사항을 반영하기 위해 질문을 편집해야합니다. –

3

루비 정규식 \s을 공백 문자로 지원합니다. 캐릭터 클래스에 추가 할 수 있어야합니다.

:with => /\A[a-zA-Z\s]+\z/ 

증명 :

/\A[a-zA-Z\s]+\z/ =~ 'hello world' #=> true 
/\A[a-zA-Z]+\z/ =~ 'hello world' #=> false 
+0

빠른 답장을 보내 주셔서 감사합니다. 나는 실제로 숫자 이외에 모든 것이 필요하다는 것을 알아 냈습니다. 그걸 어떻게 알 수 있습니까? 그래서 A-Z, a-z, \ s 그리고() * &^같은 특수 문자. 감사합니다 – Jazz

+0

@Alex Wayne 왜 \ A가 필요합니까? rubular로 테스트하는 것은 "test9"와 같이 실패한 것으로 보입니다. –

+0

'\ A'는 앵커 문자열의 시작을 나타냅니다. 정규식이 어떤 숫자도 허용하지 않기 때문에''test9 ''는 실패 할 것입니다. –