-1
助けてください、私はGoで新しくなりました。私は文字列を正規表現と返すブール関数を渡して書いた。生年月日の正しい書式を検証すると、私のテストは失敗し続けます。Goのブール関数
私のテスト:
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)
}
}
マッチング機能ブール
func IsMatchingRegex(s string, regex string) bool {
validFormat := regexp.MustCompile(regex)
matched := validFormat.MatchString(s)
if validFormat {
return false
}
return true
}
の結果を返すことができ、それは働きました!ありがとうございました! – Skipoura
それは、ここで 'MustCompile'を使うのは良い考えではないでしょう。正規表現がコンパイルされない場合、パニックになります。おそらくエラーを返すか、そうであれば単にfalseを返します。 「必須」タイプのメソッドは、グローバル(プログラムの起動時に実行され、プログラム起動時のパニックは問題ありません。 – Kaedys
こちらもJimBに同意します。 'IsMatchingRegex(s、r)'と 'regexp.MustCompile(r).MatchString(s) 'を呼び出す間に大きな違いはありません。機能する必要はありません。この変更によって、入力文字列ではなく、グローバル正規表現として日付正規表現を定義して、誤ったミスタイプやコピー・ペースト・エラーを避けることもできます。 – Kaedys