diff --git a/packages/loot-design/src/components/modals/ImportTransactions.js b/packages/loot-design/src/components/modals/ImportTransactions.js
index da98327071325c552b8a079693fa2e070844eeb2..4d3e474ebb8fbe2d9cda3f9594e94e2615628f2c 100644
--- a/packages/loot-design/src/components/modals/ImportTransactions.js
+++ b/packages/loot-design/src/components/modals/ImportTransactions.js
@@ -31,6 +31,18 @@ let dateFormats = [
   { format: 'dd mm yy', label: 'DD MM YY' }
 ];
 
+const reYearFirst = /^(\d{4})(?:[^\d]*)?(\d{2})(?:[^\d]*)?(\d{2})$/;
+const reYearLast = /^(\d{2})(?:[^\d]*)?(\d{2})(?:[^\d]*)?(\d{4})$/;
+const reTwoDig = /^(\d{2})(?:[^\d]*)?(\d{2})(?:[^\d]*)?(\d{2})$/;
+const re = {
+  'yyyy mm dd': reYearFirst,
+  'mm dd yyyy': reYearLast,
+  'dd mm yyyy': reYearLast,
+  'yy mm dd': reTwoDig,
+  'mm dd yy': reTwoDig,
+  'dd mm yy': reTwoDig
+};
+
 function parseDate(str, order) {
   if (typeof str !== 'string') {
     return null;
@@ -40,7 +52,10 @@ function parseDate(str, order) {
     return v && v.length === 1 ? '0' + v : v;
   }
 
-  let parts = str.replace(/ /g, '').split(/[^0-9]/);
+  let parts = str.replace(/\s+/g, '').match(re[order]);
+  if (!parts) return null;
+
+  parts = parts.slice(1);
 
   let year, month, day;
   switch (order) {