[gnome-maps/wip/mlundblad/add-email-and-takeaway: 1/3] utils: Add function to validate e-mail addresses
- From: Marcus Lundblad <mlundblad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/mlundblad/add-email-and-takeaway: 1/3] utils: Add function to validate e-mail addresses
- Date: Tue, 27 Apr 2021 21:00:21 +0000 (UTC)
commit b749a4d58dbce95aece5127a6897b029b4256a47
Author: Marcus Lundblad <ml update uu se>
Date: Tue Apr 27 22:50:12 2021 +0200
utils: Add function to validate e-mail addresses
src/utils.js | 12 ++++++++++++
tests/utilsTest.js | 9 +++++++++
2 files changed, 21 insertions(+)
---
diff --git a/src/utils.js b/src/utils.js
index 1f40746a..64ff9dae 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -42,6 +42,9 @@ const IMPERIAL_LOCALES = ['unm_US', 'es_US', 'es_PR', 'en_US', 'yi_US'];
// Matches all unicode stand-alone accent characters
const ACCENTS_REGEX = /[\u0300-\u036F]/g;
+// Regex matching e-mail addresses
+const EMAIL_REGEX=/^[^\s@]+@[^\s@]+\.[^\s@]+$/
+
const _integerFormat = new Intl.NumberFormat([], { maximumFractionDigits: 0 });
const _integerTwoDigitFormat =
new Intl.NumberFormat([], { minimumIntegerDigits: 2,
@@ -468,6 +471,15 @@ function isValidWebsite(website) {
return website.startsWith("http://") || website.startsWith("https://");
}
+/* Determine whether a string is a valid e-mail address. */
+function isValidEmail(email) {
+ // if it starts with 'mailto:', it's probably a mistake copy-pasting a URI
+ if (email.startsWith('mailto:'))
+ return false;
+
+ return email.match(EMAIL_REGEX) !== null;
+}
+
/* Return string with first character in upper case according the rules
* determined by the current locale
*/
diff --git a/tests/utilsTest.js b/tests/utilsTest.js
index 80fe3dc9..33801860 100644
--- a/tests/utilsTest.js
+++ b/tests/utilsTest.js
@@ -38,6 +38,7 @@ function main() {
prettyDistanceTest();
normalizeStringTest();
validWebsiteTest();
+ validEmailTest();
firstToLocaleUpperCaseTest();
}
@@ -112,6 +113,14 @@ function validWebsiteTest() {
JsUnit.assertEquals(false, Utils.isValidWebsite("https:gnome.org"));
}
+function validEmailTest() {
+ JsUnit.assertTrue(Utils.isValidEmail('mail example com'));
+ JsUnit.assertTrue(Utils.isValidEmail('information.here@company.store'));
+ JsUnit.assertTrue(Utils.isValidEmail('我買@屋企.香港'));
+ JsUnit.assertFalse(Utils.isValidEmail('mailto:mail example com'));
+ JsUnit.assertFalse(Utils.isValidEmail('mail@no-tld'));
+}
+
function firstToLocaleUpperCaseTest() {
JsUnit.assertEquals('Xxx', Utils.firstToLocaleUpperCase('xxx'));
JsUnit.assertEquals('Xxx', Utils.firstToLocaleUpperCase('Xxx'));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]