У меня есть вход, который должен отформатировать то, что печатает пользователь (на самом деле это информация с его банковского счета).Но числа должны быть отформатированы определенным образом:
- первые 5 цифр должны быть числами.
- если пользователь вводит более 5 цифр, последнее число должно иметь'-' перед этим
- после 5 цифр пользователь может ввести 'x' или 'X'
- число может иметь минимум 5 цифр и максимум 15
примеры:
- 12345
- 12345-1
- 123456-1
- 1234567-1
- 12345-x
- 123456789-x
- 123456789-X
- 12345678901234-5
На самом деле я использую нормализатор, который заменяет строку.
Это то, что я использую, но я не могу правильно отформатировать его.
export const normalizeBankAccount = value => {
if (!value) {
return value
}
if(value.length <= 16 && (!value.match(/[^\d|X]/g) || !value.match(/[^\d|-]/g) || !value.match(/[^\d|x]/g))) {
if(value.length <= 5){
return value.replace(/[^\d]/g, '')
} else if(value.length >= 6) {
const len = value.length;
const aux=value;
const initial = value.substring(0,value.length-1).replace('-', '');
console.log("len: " +len, "\naux: " +aux,"\ninitial: "+ initial)
return value.replace(new RegExp("\\d{"+ len +"}") , initial+ '-').replace(/[X]/g, '-X').replace(/[x]/g, '-x')
}
}
}
Когда я использую этот метод, строка форматируется следующим образом: