2013-03-02 2 views
0

제 레일 테스트에 아주 이상한 오류가 있습니다. I가 어떤 이유로 실패 다음과 같은 시험 : 내 모델이름 및 성 정규식 테스트에 실패했습니다

should_not allow_value('@!>::<>').for(:first_name) 

다음과 같은 검증 : 테스트가 실패 이유에

validates_format_of :first_name, :last_name, with: (/[\w]*/), allow_blank: true 

어떤 아이디어?

PS : 오류 내가 왜 ... 정규식에 +*을 변경할 때 멀리 갈 것 같다!

답변

1

정규식 /[\w]*/은 입력에 이상의 문자가 와 일치합니다. 테스트 문자열에는 단어 문자가 없기 때문에 행복하게 검증합니다. /[\w]+/은 일치하는 단어를 적어도 하나 이상 필요로하므로 테스트 문자열과 함께 작동합니다.

난 당신이 끝까지 당신의 문자열의 시작부터, 당신은 단지 원하는 지정 /^[\w]*$/을 사용한다고 생각 단어 문자 (특수 문자 정규식에서 각각 ^$ 경기 시작과 입력의 끝,,). 빈 입력을 허용합니다.

+0

예 .. 방금 게시 한 정규 표현식 .info에서 읽었습니다. 답변 주셔서 감사합니다. – foklepoint

+0

실제로'^ A'와'$'가 아닌'\ A'와'\ z'를 사용해야합니다. 전자는 ** input **의 시작과 끝이고, 후자는 ** line **의 시작과 끝이므로, 예를 들어''Bob \ nDole "'은'^ \ w + $'와 행복하게 매치하지만 '\ A \ w + \ z'와 일치하지 않습니다. – charleyc