Skip to content

Commit a26b96b

Browse files
authored
Merge pull request #116 from nextmcloud/nmc/4406-unicode-added-IDN-email-address
added unicode accepting regex for email
2 parents 90c5cf6 + 2bac5fd commit a26b96b

3 files changed

Lines changed: 8 additions & 3 deletions

File tree

src/components/EmailSection/Email.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="email">
44
<input :id="inputId"
55
ref="email"
6-
type="email"
6+
type="text"
77
:class="setNotificationMailClass"
88
:aria-describedby="helperText ? `${inputId}-helper-text` : ''"
99
:placeholder="inputPlaceholder"

src/constants/AccountPropertyConstants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,5 @@ export const VERIFICATION_ENUM = Object.freeze({
178178
*/
179179
// eslint-disable-next-line no-control-regex
180180
export const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i
181+
182+
export const UNICODE_EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/u

src/utils/validate.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'
1+
import { VALIDATE_EMAIL_REGEX, UNICODE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'
22

33
/**
44
* Validate the email input
@@ -12,7 +12,10 @@ import { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'
1212
*/
1313
export function validateEmail(input) {
1414
return typeof input === 'string'
15-
&& VALIDATE_EMAIL_REGEX.test(input)
15+
&& (
16+
VALIDATE_EMAIL_REGEX.test(input)
17+
|| UNICODE_EMAIL_REGEX.test(input)
18+
)
1619
&& input.slice(-1) !== '\n'
1720
&& input.length <= 320
1821
&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320

0 commit comments

Comments
 (0)