NAME
Regexp::Common::VATIN - Patterns for matching EU VAT Identification Numbers
SYNOPSIS
use feature qw(say);
use Regexp::Common qw(VATIN);
say "DE123456789" =~ $RE{VATIN}{DE}; # 1
say "DE123456789" =~ $RE{VATIN}{any}; # 1
say "LT123ABC" =~ $RE{VATIN}{LT}; # ""
DESCRIPTION
This module provides regular expression patterns to match any of the sanctioned VATIN formats from the 27 nations levying a European Union value added tax. The data found at http://ec.europa.eu/taxation_customs/vies/faq.html#item_11 is used as the authoritative source of all patterns.
JAVASCRIPT
All patterns in this module are written to be compatible with JavaScript's somewhat less-expressive regular expression standard. They can thus easily be exported for use in a browser-facing web application:
use JSON qw(encode_json);
my $patterns = encode_json($RE{VATIN});
CAVEAT
In keeping with the standard set by the core Regexp::Common modules, patterns are neither anchored nor enclosed with word boundaries. Consider a malformed VATIN, e.g.,
my $vatin = "GB1234567890";
According to the sanctioned patterns from the United Kingdom, the above VATIN is malformed (one digit too many). And yet,
say $vatin =~ $RE{VATIN}{GB}; # 1
To test for an exact match, use start and end anchors:
say $vatin =~ /^$RE{VATIN}{GB}$/; # ""
SEE ALSO
- Regexp::Common
-
For documentation of the interface this set of regular expressions uses.
- Business::Tax::VAT::Validation
-
Checks the official EU database for registered VATINs.
AUTHOR
Richard Simões <rsimoes AT cpan DOT org>
COPYRIGHT AND LICENSE
Copyright © 2013 Richard Simões. This module is released under the terms of the MIT License and may be modified and/or redistributed under the same or any compatible license.