RegEx для проверки и форматирования номера облигации


1 принят

Что-то вроде этого должно работать:

const regex = /^(d{2})-?([a-zA-Z]{3})-?(d{6})-?(d{2})-?(d{1,4})$/;
const reformat = str =>
  regex.test(str) ? str.replace(regex, '$1-$2-$3-$4-$5') : null;

тесты

const assert = require('assert');
assert.equal(reformat('invalid-format'), null);
assert.equal(reformat('01-XXX-000001-01-0001'), '01-XXX-000001-01-0001');
assert.equal(reformat('01XXX000001010001'), '01-XXX-000001-01-0001');
assert.equal(reformat('01XXX000001011'), '01-XXX-000001-01-1');
assert.equal(reformat('43-XPR-000643-01-0001'), '43-XPR-000643-01-0001');
assert.equal(reformat('43XPR000643010001'), '43-XPR-000643-01-0001');
JavaScript, JQuery, регулярное выражение,

javascript,jquery,regex,

0

Ответов: 1


1 принят

Что-то вроде этого должно работать:

const regex = /^(d{2})-?([a-zA-Z]{3})-?(d{6})-?(d{2})-?(d{1,4})$/;
const reformat = str =>
  regex.test(str) ? str.replace(regex, '$1-$2-$3-$4-$5') : null;

тесты

const assert = require('assert');
assert.equal(reformat('invalid-format'), null);
assert.equal(reformat('01-XXX-000001-01-0001'), '01-XXX-000001-01-0001');
assert.equal(reformat('01XXX000001010001'), '01-XXX-000001-01-0001');
assert.equal(reformat('01XXX000001011'), '01-XXX-000001-01-1');
assert.equal(reformat('43-XPR-000643-01-0001'), '43-XPR-000643-01-0001');
assert.equal(reformat('43XPR000643010001'), '43-XPR-000643-01-0001');
JavaScript, JQuery, регулярное выражение,
Похожие вопросы