Skip to content

Commit 19f5acd

Browse files
authored
Update regex for email address (matrix-org#1826)
* Update regex for email address * Add changelog Signed-off-by: yostyle <[email protected]> * Add unit test * rename changelog --------- Signed-off-by: yostyle <[email protected]>
1 parent f666b8f commit 19f5acd

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

MatrixSDK/Utils/MXTools.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#warning File has not been annotated with nullability, see MX_ASSUME_MISSING_NULLABILITY_BEGIN
3131

3232
#pragma mark - Constant definition
33-
NSString *const kMXToolsRegexStringForEmailAddress = @"[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}";
33+
NSString *const kMXToolsRegexStringForEmailAddress = @"^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$";
3434

3535
// The HS domain part in Matrix identifiers
3636
#define MATRIX_HOMESERVER_DOMAIN_REGEX @"[A-Z0-9]+((\\.|\\-)[A-Z0-9]+){0,}(:[0-9]{2,5})?"

MatrixSDKTests/MXToolsUnitTests.m

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,58 @@ - (void)testMatrixIdentifiers
6868
XCTAssertTrue([MXTools isMatrixGroupIdentifier:@"+matrix:matrix.org"]);
6969
}
7070

71+
- (void)testEmailAddresses
72+
{
73+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
74+
XCTAssertTrue([MXTools isEmailAddress:@"alice@matrix"]);
75+
XCTAssertTrue([MXTools isEmailAddress:@"al-i_ce@matrix"]);
76+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
77+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
78+
XCTAssertTrue([MXTools isEmailAddress:@"*@example.net"]);
79+
XCTAssertTrue([MXTools isEmailAddress:@"fred&[email protected]"]);
80+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
81+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
82+
XCTAssertTrue([MXTools isEmailAddress:@"mailbox.sub1.sub2@this-domain"]);
83+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
84+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
85+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
86+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
87+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
88+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
89+
XCTAssertTrue([MXTools isEmailAddress:@"admin@mailserver1"]);
90+
XCTAssertTrue([MXTools isEmailAddress:@"#!$%&'*+-/=?^_`{}|[email protected]"]);
91+
XCTAssertTrue([MXTools isEmailAddress:@"example@localhost"]);
92+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
93+
XCTAssertTrue([MXTools isEmailAddress:@"user@localserver"]);
94+
XCTAssertTrue([MXTools isEmailAddress:@"user@tt"]);
95+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
96+
XCTAssertTrue([MXTools isEmailAddress:@"[email protected]"]);
97+
98+
XCTAssertFalse([MXTools isEmailAddress:@"alice.matrix.org"]);
99+
XCTAssertFalse([MXTools isEmailAddress:@"al [email protected]"]);
100+
XCTAssertFalse([MXTools isEmailAddress:@"al([email protected]"]);
101+
XCTAssertFalse([MXTools isEmailAddress:@"alice@"]);
102+
XCTAssertFalse([MXTools isEmailAddress:@"al\n[email protected]"]);
103+
XCTAssertFalse([MXTools isEmailAddress:@"al@[email protected]"]);
104+
XCTAssertFalse([MXTools isEmailAddress:@"al@[email protected]"]);
105+
XCTAssertFalse([MXTools isEmailAddress:@"Just a string"]);
106+
XCTAssertFalse([MXTools isEmailAddress:@"string"]);
107+
XCTAssertFalse([MXTools isEmailAddress:@"me@"]);
108+
XCTAssertFalse([MXTools isEmailAddress:@"@example.com"]);
109+
XCTAssertFalse([MXTools isEmailAddress:@"[email protected]"]);
110+
XCTAssertFalse([MXTools isEmailAddress:@"[email protected]"]);
111+
XCTAssertFalse([MXTools isEmailAddress:@"[email protected]"]);
112+
XCTAssertFalse([MXTools isEmailAddress:@"me\\@example.com"]);
113+
XCTAssertFalse([MXTools isEmailAddress:@"Abc.example.com"]);
114+
XCTAssertFalse([MXTools isEmailAddress:@"A@b@[email protected]"]);
115+
XCTAssertFalse([MXTools isEmailAddress:@"a\"b(c)d,e:f;g<h>i[j\\k][email protected]"]);
116+
XCTAssertFalse([MXTools isEmailAddress:@"just\"not\"[email protected]"]);
117+
XCTAssertFalse([MXTools isEmailAddress:@"this is\"not\\[email protected]"]);
118+
XCTAssertFalse([MXTools isEmailAddress:@"this\\ still\\\"not\\\\[email protected]"]);
119+
XCTAssertFalse([MXTools isEmailAddress:@"[email protected]"]);
120+
XCTAssertFalse([MXTools isEmailAddress:@"[email protected]"]);
121+
}
122+
71123

72124
#pragma mark - Strings encoding
73125

changelog.d/pr-1826.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Update regex for email address to be aligned email format in RFC 5322

0 commit comments

Comments
 (0)