diff --git a/scrubbers/string.go b/scrubbers/string.go index 8cfa7d2..6567499 100644 --- a/scrubbers/string.go +++ b/scrubbers/string.go @@ -14,7 +14,7 @@ var ( emailRegex = regexp.MustCompile("(?:(?:(?:(?:[a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+(?:\\.(?:[a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+)*)|(?:(?:\\x22)(?:(?:(?:(?:\\x20|\\x09)*(?:\\x0d\\x0a))?(?:\\x20|\\x09)+)?(?:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:\\(?:[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}]))))*(?:(?:(?:\\x20|\\x09)*(?:\\x0d\\x0a))?(\\x20|\\x09)+)?(?:\\x22)))@(?:(?:(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])(?:[a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.)+(?:(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])(?:[a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.?(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+") emailSubmatchFn = func(input string) string { idx := strings.IndexByte(input, '@') - scrubbed := fmt.Sprintf("<>", hashString(input[idx:])) + scrubbed := fmt.Sprintf("<>", hashString(input[:idx])) return scrubbed + input[idx:] } ) diff --git a/scrubbers/string_test.go b/scrubbers/string_test.go index ea4776c..5874862 100644 --- a/scrubbers/string_test.go +++ b/scrubbers/string_test.go @@ -29,11 +29,11 @@ func TestEmails(t *testing.T) { tt := Test{Email: email} err := scrub.Struct(context.Background(), &tt) Equal(t, err, nil) - Equal(t, tt.Email, "<>@gmail.com") + Equal(t, tt.Email, "<>@gmail.com") err = scrub.Field(context.Background(), &email, "emails") Equal(t, err, nil) - Equal(t, email, "<>@gmail.com") + Equal(t, email, "<>@gmail.com") var iface interface{} err = scrub.Field(context.Background(), &iface, "emails") @@ -43,7 +43,15 @@ func TestEmails(t *testing.T) { iface = "Dean.Karn@gmail.com" err = scrub.Field(context.Background(), &iface, "emails") Equal(t, err, nil) - Equal(t, iface, "<>@gmail.com") + Equal(t, iface, "<>@gmail.com") + + emailText := "alice@example.com bob@example.com" + err = scrub.Field(context.Background(), &emailText, "emails") + Equal(t, err, nil) + Equal(t, emailText, + "<>@example.com "+ + "<>@example.com", + ) } func TestText(t *testing.T) {