Bank Tx Cleaner
Bank transaction description cleaner.
by Rodney Golpe
HTML
<div id="result">
</div>
JavaScript
const $result = document.getElementById("result");
//let str = "BOB'S DISCOUNT F DES:PAYROLL ID:xxxxxxxxxx1106X INDN: CO ID:9006 229";
const str = "Direct Deposit / CO: JET TOOL & CUTTE ID: 69890300016795X DESC: PAYROLL";
// series of regex replacements aimed at keeping core pieces of transaction description
// (employer name, check number, payee name)
let resultHtml = `<u>ORIGINAL</u>:<br/>${str}<br/>`;
function cleanTxDesc(inputStr) {
let str = inputStr;
// series of regex replacements aimed at keeping core pieces of transaction description
// (employer name, check number, payee name)
const patterns = [
[/\b(INDN|ID)\:.*$/gi, ''], // bank indications (INDN:, ID:) to end
[/CO\:/gi, ''], // CO:
[/[^a-zA-Z0-9\-\/\'\s]/g, ' '], // non-alphanumeric and most special chars
[/(\d)([A-Z])/gi, '$1 $2'], // insert space between number and alpha
[/\b(PPD|CCD)|(PPD|CCD)\b/gi, ' '], // PPD and CCD
[/(CHECK)\s+(\d+)/i, '$1$2'], // concatenate word 'CHECK' with immediately following number
[/X+\d+/gi, ''], // x1, xx2, xxx123, etc
[/\d{1,2}\/(\d{1,2})?(\/)?(\d+)?/gi, ''], // dates (3/3, 3/31, 03/31/16, etc)
[/\b\d*\b/g, ''], // numbers only
[/(CHECK)(\d+)/i, '$1 $2'], // insert space between word CHECK and attached number
[/(^|\s)[A-Z0-9\-\/\']{1}(\s|$)/gi, ' '], // remove single non-whitespace chars
[/\s{2,}/g, ' '], // remove extra spaces
[/Direct Deposit|Payroll/gi, ''] // direct deposit
];
patterns.forEach(patt => {
str = str.replace(patt[0], patt[1]);
resultHtml += `<br/>${str} <span style="color: #bbb; font-family: monospace;">${patt[0]}</span>`;
});
return str.trim() || inputStr;
}
cleanTxDesc(str);
$result.innerHTML = resultHtml;