-1
도와주세요, 새 걸로 이동해. 나는 문자열을 정규 표현식에 전달하고 boolan을 반환하는 함수를 작성했다. 생년월일의 올바른 형식을 확인할 때 내 테스트가 계속 실패합니다.부울 기능 이동
내 시험 :
func TestIsMatchingRegex(t *testing.T) {
t.Parallel()
var tests = []struct {
dob string
reg string
expected bool
desc string
}{
{dob: "1928-06-05", reg: `[12][0-9]{3}-[01][0-9]-[0-3][0-9]`, expected: true, desc: "test1"},
{dob: "1928/06/05", reg: `[12][0-9]{3}-[01][0-9]-[0-3][0-9]`, expected: false, desc: "test2"},
}
for _, test := range tests {
actual := IsMatchingRegex(test.dob, test.reg)
assert.Equal(t, actual, test.expected, test.desc)
}
}
매칭 기능 부울 validFormat
이 Regexp
아닌 bool
때문에 귀하의 테스트가 실패하지 않는
func IsMatchingRegex(s string, regex string) bool {
validFormat := regexp.MustCompile(regex)
matched := validFormat.MatchString(s)
if validFormat {
return false
}
return true
}
, 그것은 일을 간단하게
MatchString
의 결과를 반환 (또는 한 줄 이후의 모든 별도의 기능을 사용할 수 없습니다) 수! 고맙습니다! – Skipoura그런데, 여기에'MustCompile'을 사용하는 것은 좋은 생각이 아닙니다. 정규식이 컴파일되지 않으면 패닉이 발생합니다. 아마도 오류를 반환해야합니다. 그렇지 않으면 오류가 발생합니다. "필수"유형 메소드는 전역 (프로그램이 시작될 때 실행되고 프로그램 시작시 패닉이 좋을 때 작동하는 동안 작동하는 것) 또는 테스트를 위해 가장 잘 사용됩니다. – Kaedys
짐바브웨도 여기에 동의합니다. 'IsMatchingRegex (s, r)'과'regexp.MustCompile (r) .MatchString (s) '을 호출하는 것과 큰 차이는 없습니다. 기능이 필요하지 않습니다. 이 변경은 입력 문자열이 아닌 전역으로 날짜 정규식을 정의 할 수있게하여 우발적 인 실수 또는 복사 - 붙여 넣기 오류를 방지합니다. – Kaedys