Skip to content

Instantly share code, notes, and snippets.

@boye
Created May 28, 2013 14:39
Show Gist options
  • Save boye/5663228 to your computer and use it in GitHub Desktop.
Save boye/5663228 to your computer and use it in GitHub Desktop.
Small module with a couple helper methods related to VWE functionality. Based on http://blog.kenteken.tv/2011/05/06/code-snippets-formatteren-rdw-kenteken/
/**
* Small module with a couple helper methods related to VWE functionality
* Based on http://blog.kenteken.tv/2011/05/06/code-snippets-formatteren-rdw-kenteken/
*
* @author Boye Oomens <[email protected]>
* @type {Object}
*/
var vwe = {
/**
* Possible plate number combinations (diplomat plates not included)
* @type {Array}
*/
combos: [
/^[a-zA-Z]{2}[\d]{2}[\d]{2}$/, // 0 XX-99-99
/^[\d]{2}[\d]{2}[a-zA-Z]{2}$/, // 1 99-99-XX
/^[\d]{2}[a-zA-Z]{2}[\d]{2}$/, // 2 99-XX-99
/^[a-zA-Z]{2}[\d]{2}[a-zA-Z]{2}$/, // 3 XX-99-XX
/^[a-zA-Z]{2}[a-zA-Z]{2}[\d]{2}$/, // 4 XX-XX-99
/^[\d]{2}[a-zA-Z]{2}[a-zA-Z]{2}$/, // 5 99-XX-XX
/^[\d]{2}[a-zA-Z]{3}[\d]{1}$/, // 6 99-XXX-9
/^[\d]{1}[a-zA-Z]{3}[\d]{2}$/, // 7 9-XXX-99
/^[a-zA-Z]{2}[\d]{3}[a-zA-Z]{1}$/, // 8 XX-999-X
/^[a-zA-Z]{1}[\d]{3}[a-zA-Z]{2}$/ // 9 X-999-XX
],
/**
* Formats the given license plate number
*
* @param {String} plateNr
* @return {Number|Boolean}
*/
format: function (plateNr, sideCode) {
plateNr = plateNr.replace(/-/g, '').toUpperCase();
if ( sideCode >= 6 ) {
return plateNr.substr(0, 2) + '-' + plateNr.substr(2, 2) + '-' + plateNr.substr(4, 2);
}
if ( sideCode == 7 || sideCode == 9 ) {
return plateNr.substr(0, 2) + '-' + plateNr.substr(2, 3) + '-' + plateNr.substr(5, 1);
}
if ( sideCode == 8 || sideCode == 10 ) {
return plateNr.substr(0, 1) + '-' + plateNr.substr(1, 3) + '-' + plateNr.substr(4, 2);
}
return plateNr;
},
/**
* Fetches the sidecode of the given license plate number
*
* @param {String} plateNr
* @return {Number|Boolean}
*/
getSideCode: function (plateNr) {
var combos = this.combos,
i = combos.length;
if ( !plateNr ) {
return false;
}
while (i--) {
if ( plateNr.match( combos[i] ) ) {
return i + 1;
}
}
},
/**
* Checks whether the given license plate is valid (according to Dutch legislation)
*
* @param {String} plateNr
* @return {Boolean}
*/
isValid: function (plateNr) {
var results = [],
combos = this.combos,
i = combos.length;
if ( !plateNr ) {
return false;
}
while (i--) {
if ( combos[i].test( plateNr.replace(/-/g, '') ) ) {
results.push( plateNr );
}
}
return !!results.length;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment