Skip to content

Commit 6a42969

Browse files
Copilotcol-panic
andcommitted
Fix StringTool.isMailAddress to support plus character in email addresses
Co-authored-by: col-panic <1679857+col-panic@users.noreply.github.com>
1 parent 6e4edaa commit 6a42969

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

bundles/ch.rgw.utility/src/ch/rgw/tools/StringTool.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -944,7 +944,7 @@ public static boolean isMailAddress(final String in) {
944944
return false;
945945
}
946946
// up to 7 characters in device for james@bond.invalid
947-
return in.matches("\\w[\\w|\\.\\-]+@\\w[\\w\\.\\-]+\\.[a-zA-Z]{2,7}");
947+
return in.matches("\\w[\\w|\\.\\-\\+]+@\\w[\\w\\.\\-]+\\.[a-zA-Z]{2,7}");
948948
// oder \w[\w|\.\-]+@\w[\w\.\-]+\.[a-zA-Z]{2,4}
949949
}
950950

tests/ch.rgw.utility.tests/src/ch/rgw/tools/Test_StringTool.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,28 @@
55

66
public class Test_StringTool {
77

8+
@Test
9+
public void testIsMailAddress() {
10+
// Test valid email addresses that should pass
11+
Assert.assertTrue("Basic email should be valid", StringTool.isMailAddress("test@example.com"));
12+
Assert.assertTrue("Email with dot should be valid", StringTool.isMailAddress("test.person@example.com"));
13+
Assert.assertTrue("Email with dash should be valid", StringTool.isMailAddress("test-person@example.com"));
14+
15+
// Test valid email addresses with plus character (Gmail-style aliases)
16+
Assert.assertTrue("Email with plus should be valid", StringTool.isMailAddress("test.person+tag@gmail.com"));
17+
Assert.assertTrue("Email with plus and number should be valid", StringTool.isMailAddress("user+123@domain.org"));
18+
Assert.assertTrue("Email with plus at end should be valid", StringTool.isMailAddress("test+@example.com"));
19+
20+
// Test invalid email addresses
21+
Assert.assertFalse("Null should be invalid", StringTool.isMailAddress(null));
22+
Assert.assertFalse("Empty string should be invalid", StringTool.isMailAddress(""));
23+
Assert.assertFalse("String without @ should be invalid", StringTool.isMailAddress("testexample.com"));
24+
Assert.assertFalse("String without domain should be invalid", StringTool.isMailAddress("test@"));
25+
Assert.assertFalse("String without local part should be invalid", StringTool.isMailAddress("@example.com"));
26+
Assert.assertFalse("String with single char TLD should be invalid", StringTool.isMailAddress("test@example.c"));
27+
Assert.assertFalse("String with too long TLD should be invalid", StringTool.isMailAddress("test@example.toolongext"));
28+
}
29+
830
@Test
931
public void testStringCompare() {
1032

0 commit comments

Comments
 (0)