Commit 3a9ce57c796 for woocommerce
commit 3a9ce57c796d203363f5613857b73c67abfe131e
Author: Thomas Roberts <5656702+opr@users.noreply.github.com>
Date: Tue Aug 25 15:12:49 2026 +0100
fix: accept Danish postcodes without the DK prefix hyphen (#67685)
* Fix Danish postcode prefix validation
* Add changelog entry for Danish postcode validation fix
* Trigger PHP tests for postcode validation data changes
diff --git a/plugins/woocommerce/changelog/fix-dk-postcode-separator b/plugins/woocommerce/changelog/fix-dk-postcode-separator
new file mode 100644
index 00000000000..cdbd6abbcb6
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-dk-postcode-separator
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Accept Danish postcodes that carry the DK prefix with no separator or with a space, matching the separator handling introduced for Latvian postcodes.
diff --git a/plugins/woocommerce/client/blocks/bin/generate-postcode-validation-rules.js b/plugins/woocommerce/client/blocks/bin/generate-postcode-validation-rules.js
index b4d3a61105f..f01e48614f4 100644
--- a/plugins/woocommerce/client/blocks/bin/generate-postcode-validation-rules.js
+++ b/plugins/woocommerce/client/blocks/bin/generate-postcode-validation-rules.js
@@ -68,7 +68,10 @@ const COMPATIBILITY_OVERRIDES = {
},
CZ: { pattern: '(?:CZ-)?[0-9]{3}\\s?[0-9]{2}' },
DE: { pattern: '(?:0[1-9]|[1-9][0-9])[0-9]{3}' },
- DK: { pattern: '(?:DK-)?(?:[1-24-9]\\d{3}|3[0-8]\\d{2})' },
+ DK: {
+ pattern: '(?:DK[- ]?)?(?:[1-24-9]\\d{3}|3[0-8]\\d{2})',
+ flags: 'i',
+ },
ES: { pattern: '[0-9]{5}' },
FI: { pattern: '[0-9]{5}' },
FR: { pattern: '[0-9]{5}', flags: 'i' },
diff --git a/plugins/woocommerce/client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json b/plugins/woocommerce/client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json
index f8ab0887335..6b2aab6bdef 100644
--- a/plugins/woocommerce/client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json
+++ b/plugins/woocommerce/client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json
@@ -16,8 +16,20 @@
{ "country": "CZ", "postcode": "1600", "expected": false },
{ "country": "DE", "postcode": "01000", "expected": true },
{ "country": "DE", "postcode": "00000", "expected": false },
- { "country": "DK", "postcode": "DK-1234", "expected": true },
- { "country": "DK", "postcode": "3900", "expected": false },
+ { "country": "DK", "postcode": "DK-1050", "expected": true },
+ { "country": "DK", "postcode": "1050", "expected": true },
+ { "country": "DK", "postcode": "DK-3800", "expected": true },
+ { "country": "DK", "postcode": "DK1050", "expected": true },
+ { "country": "DK", "postcode": "DK 1050", "expected": true },
+ { "country": "DK", "postcode": "dk-1050", "expected": true },
+ { "country": "DK", "postcode": "dk1050", "expected": true },
+ { "country": "DK", "postcode": "DK-3900", "expected": false },
+ { "country": "DK", "postcode": "DK3900", "expected": false },
+ { "country": "DK", "postcode": "DK-105", "expected": false },
+ { "country": "DK", "postcode": "0500", "expected": false },
+ { "country": "DK", "postcode": "DK\n1050", "expected": false },
+ { "country": "DK", "postcode": "DK\t1050", "expected": false },
+ { "country": "DK", "postcode": "DK1050\n", "expected": false },
{ "country": "EE", "postcode": "12345", "expected": true },
{ "country": "EE", "postcode": "1234", "expected": false },
{ "country": "ES", "postcode": "99999", "expected": true },
diff --git a/plugins/woocommerce/i18n/postcode-validation-rules.json b/plugins/woocommerce/i18n/postcode-validation-rules.json
index 47d9fd6a9a5..d61b03ee459 100644
--- a/plugins/woocommerce/i18n/postcode-validation-rules.json
+++ b/plugins/woocommerce/i18n/postcode-validation-rules.json
@@ -30,7 +30,8 @@
"pattern": "(?:0[1-9]|[1-9][0-9])[0-9]{3}"
},
"DK": {
- "pattern": "(?:DK-)?(?:[1-24-9]\\d{3}|3[0-8]\\d{2})"
+ "pattern": "(?:DK[- ]?)?(?:[1-24-9]\\d{3}|3[0-8]\\d{2})",
+ "flags": "i"
},
"EE": {
"pattern": "\\d{5}"
diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json
index 3c66695caa6..abe502a32a7 100644
--- a/plugins/woocommerce/package.json
+++ b/plugins/woocommerce/package.json
@@ -159,6 +159,8 @@
"onlyForDependencies": [],
"changes": [
"client/admin/config/*.json",
+ "client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json",
+ "i18n/postcode-validation-rules.json",
"composer.json",
"composer.lock",
"**/*.php",
@@ -188,6 +190,8 @@
"onlyForDependencies": [],
"changes": [
"client/admin/config/*.json",
+ "client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json",
+ "i18n/postcode-validation-rules.json",
"composer.json",
"composer.lock",
"**/*.php",
@@ -681,6 +685,8 @@
"onlyForDependencies": [],
"changes": [
"client/admin/config/*.json",
+ "client/blocks/packages/public-api/blocks-checkout/utils/validation/test/postcode-validation-fixtures.json",
+ "i18n/postcode-validation-rules.json",
"composer.json",
"composer.lock",
"**/*.php",