const regex = /(?:(AT)\s*(U[0-9]{8}))|(?:(BE)\s*(0?[0-9]{*}))|(?:(CZ)\s*([0-9]{8,10}))|(?:(DE)\s*([0-9]{9}))|(?:(CY)\s*([0-9]{8}[A-Z]))|(?:(DK)\s*([0-9]{8}))|(?:(EE)\s*([0-9]{9}))|(?:(GR)\s*([0-9]{9}))|(?:(ES)\s*([0-9A-Z][0-9]{7}[0-9A-Z]))|(?:(FI)\s*([0-9]{8}))|(?:(FR)\s*([0-9A-Z]{2}[0-9]{9}))|(?:(GB)\s*(([0-9]{9}|[0-9]{12})~(GD|HA)[0-9]{3}))|(?:(HU)\s*([0-9]{8}))|(?:(IE)\s*([0-9][A-Z0-9\\+\\*][0-9]{5}[A-Z]))|(?:(IT)\s*([0-9]{11}))|(?:(LT)\s*(([0-9]{9}|[0-9]{12})))|(?:(LU)\s*([0-9]{8}))|(?:(LV)\s*([0-9]{11}))|(?:(MT)\s*([0-9]{8}))|(?:(NL)\s*([0-9]{9}B[0-9]{2}))|(?:(PL)\s*([0-9]{10}))|(?:(PT)\s*([0-9]{9}))|(?:(SE)\s*([0-9]{12}))|(?:(SI)\s*([0-9]{8}))|(?:(SK)\s*([0-9]{10}))|(?:\D|^)([0-9]{11})(?:\D|$)|(?:(CHE)(-|\s*)([0-9]{3}\.[0-9]{3}\.[0-9]{3}))/gi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?:(AT)\\s*(U[0-9]{8}))|(?:(BE)\\s*(0?[0-9]{*}))|(?:(CZ)\\s*([0-9]{8,10}))|(?:(DE)\\s*([0-9]{9}))|(?:(CY)\\s*([0-9]{8}[A-Z]))|(?:(DK)\\s*([0-9]{8}))|(?:(EE)\\s*([0-9]{9}))|(?:(GR)\\s*([0-9]{9}))|(?:(ES)\\s*([0-9A-Z][0-9]{7}[0-9A-Z]))|(?:(FI)\\s*([0-9]{8}))|(?:(FR)\\s*([0-9A-Z]{2}[0-9]{9}))|(?:(GB)\\s*(([0-9]{9}|[0-9]{12})~(GD|HA)[0-9]{3}))|(?:(HU)\\s*([0-9]{8}))|(?:(IE)\\s*([0-9][A-Z0-9\\\\+\\\\*][0-9]{5}[A-Z]))|(?:(IT)\\s*([0-9]{11}))|(?:(LT)\\s*(([0-9]{9}|[0-9]{12})))|(?:(LU)\\s*([0-9]{8}))|(?:(LV)\\s*([0-9]{11}))|(?:(MT)\\s*([0-9]{8}))|(?:(NL)\\s*([0-9]{9}B[0-9]{2}))|(?:(PL)\\s*([0-9]{10}))|(?:(PT)\\s*([0-9]{9}))|(?:(SE)\\s*([0-9]{12}))|(?:(SI)\\s*([0-9]{8}))|(?:(SK)\\s*([0-9]{10}))|(?:\\D|^)([0-9]{11})(?:\\D|$)|(?:(CHE)(-|\\s*)([0-9]{3}\\.[0-9]{3}\\.[0-9]{3}))', 'gi')
const str = `CHE-459.288.946
IDI n. CHE-459.288.946
CHE 459.288.946
PI:01924110289 CF BGGLNI40S20I008I
LV12345678901
12345678901`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions