У меня есть значение, которое я хочу добавить два дефиса.
Например, если я получаю:
ФН322КН
Я хочу преобразовать его в:
ФН-322-КН
Я пытаюсь использовать это решение (Значение переменной javascript маски), и я застрял здесь:
КОД:
значение переменной = 'FN322KN';
var formatted = value.replace(/^(.{2})(.{5}).*/, '$1-$2');
РЕЗУЛЬТАТ КО:
«ФН-322КН»
Может кто-нибудь, пожалуйста, скажите мне, как я могу добавить второй "-"?
ОБНОВЛЯТЬ!!
Ответы Mark Baijens и Buttered_Toast верны. У меня есть еще один вопрос. Что, если значение будет выглядеть как FN-322KN или F-N322-KN? Типа, не в формате? Потому что если это так, то он добавляет один хифен туда, где он уже существует, делая его «--».
Спасибо!
Вы всегда хотите дефисы после первых 2 символов и после первых 5 символов?
Кажется, что ОП хочет дефис всякий раз, когда за символом от A
до Z
следует цифра... /[A-Z](?=\d)/g
... и всякий раз, когда за цифрой следует символ от A
до Z
... /\d(?=[A-Z])/g
... что приводит к любое из следующих решений ... 'FN322KN'.replace(/[A-Z](?=\d)/g, '$&-').replace(/\d(?=[A-Z])/g, '$&-');
... 'FN322KN'.replace(/[A-Z](?=\d)|\d(?=[A-Z])/g, '$&-');
Предполагая, что вам всегда нужны дефисы после первых 2 символов, а после первых 5 символов вы можете легко изменить регулярное выражение на 3 группы.
var value = 'FN322KN';
var formatted = value.replace(/^(.{2})(.{3})(.{2}).*/, '$1-$2-$3');
console.info(formatted);
Исходя из предоставленного контента, вы можете попробовать это
(?=(.{5}|.{2})$)
https://regex101.com/r/JZVivU/1
const regex = /(?=(.{5}|.{2})$)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?=(.{5}|.{2})$)', 'gm')
const str = `FN322KN`;
const subst = `-`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.info('Substitution result: ', result);
Есть ли какая-то логика для сопоставления этой строки
FN322KN
Как символы A-Z и цифры?