Normski, I believe I have found the issue.
jigoshop/classes/jigoshop_validation.class.php
There is a function as follows:
/**
* Checks for a valid postcode for a country
*
* @param string postcode
* @param string country
* @return boolean
*/
public static function is_postcode($postcode, $country)
{
if (strlen(trim(preg_replace('/[\s\-A-Za-z0-9]/', '', $postcode))) > 0) {
return false;
}
$country = strtoupper(trim($country));
$postcode = strtoupper(trim($postcode));
if (!isset(self::$postcodes[$country])) {
return false;
}
if (Jigoshop_Base::get_options()->get_option('jigoshop_enable_postcode_validating') == 'yes') {
$regex = '/'.self::$postcodes[$country].'/';
jigoshop_log("VALIDATE POSTCODE: country = ".$country." & regex = ".$regex);
switch ($country) {
case 'GB':
return self::is_GB_postcode($postcode);
default:
$match = preg_match($regex, $postcode);
if ($match !== 1) {
return false;
}
}
}
return true;
}
Specifically the line
case 'GB':
Caused me to look further up, adjusting the line
'UK' => '^(GIR|[A-Z]\d[A-Z\d]??|[A-Z]{2}\d[A-Z\d]??)[ ]??(\d[A-Z]{2})$',
From UK to GB fixes the issue for me.
Jigoshop, strangely this only occurs on my live environment and not test.