RegEx для сопоставления двух одинарных кавычек из начала и конца строк - PullRequest
2 голосов
/ 25 апреля 2019

Мне нужно заменить две кавычки в начале и конце элементов одной кавычкой.

Мой код:

const regex = /['']/g;
let categories = [];
let categoryArray = data.categories.split(','); // ''modiles2'', ''Men''s Apparel'', ''Women''s Apparel'', ''Jeans'', ''Sneakers''
    for (let value of Object.values(categoryArray)) {
        categories.push(categoryArray[i].replace(regex, '\''));
    }
}
return categories 
// What should be 'modiles2','Men''s Apparel','Women''s Apparel','Jeans','Sneakers'
// What comes back ''modiles2'',''Men''s Apparel'',''Women''s Apparel'',''Jeans'',''Sneakers''

Мое регулярное выражение заменяет только одну из двух кавычек на одну кавычку.

Как мне решить эту проблему?

Ответы [ 5 ]

2 голосов
/ 25 апреля 2019

Вот мои два цента, в одной строке:

return data.categories.split(',').map(val => val.trim().replace(/^'{2,}|'{2,}$/, "'"));
2 голосов
/ 25 апреля 2019

В вашем шаблоне используется класс символов [''], который соответствует любому из перечисленных, который может быть записан как ['], что означает просто '

Если их может быть больше 2 в начале или вВ конце концов, вы также можете использовать квантификатор {2,}, чтобы сопоставить 2 или более одинарных кавычек и заменить их одинарными.Для совпадения ровно 2 одинарных кавычек используйте ''.

^'{2,}|'{2,}$
  • ^'{2,} Совпадение 2 или более кавычек в начале строки
  • | или
  • '{2,}$ Соответствие 2 или более одинарных кавычек в конце строки

Regex demo

Используйте глобальный флаг /g для заменывсе случаи.

console.log("''modiles2'',''Men''s Apparel'',''Women''s Apparel'',''Jeans'',''Sneakers''"
.split(',')
.map(s => s.replace(/^'{2,}|'{2,}$/g, "'")))
2 голосов
/ 25 апреля 2019

Вам нужно сопоставить две кавычки - используйте это регулярное выражение:

const regex = /^'.*'$/g;
1 голос
/ 25 апреля 2019

Этот RegEx может помочь сделать это.Вы можете использовать \ x27 вместо ' просто для безопасности.

^(\x27{2,})(.+)(\x27{2,})$

enter image description here

Этот RegEx просто создает три группы, и вы можете использовать $ 2 , что является вашимцелевой вывод.

1 голос
/ 25 апреля 2019

Классы символов ищут любой один символ в скобках.Классы символов, имеющие повторяющиеся символы, такие как [''], могут обходиться без такого дублирования.

"''modiles2'',''Men''s Apparel'',''Women''s Apparel'',''Jeans'',''Sneakers''"
    .split(',')
    .forEach(s => console.log( s.replace(/^''|''$/g, '\'') ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...