RegEx用于匹配字符串开头和结尾的两个单引号

时间:2019-04-25 04:59:24

标签: javascript arrays regex string ecmascript-6

我需要用一个引号替换元素开头和结尾的两个引号。

我的代码是:

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 个答案:

答案 0 :(得分:2)

您需要匹配两个引号-使用此正则表达式:

const regex = /^'.*'$/g;

答案 1 :(得分:2)

您的模式使用字符类[''],该字符类与列出的任何字符都匹配,可以写为[']只是'

如果开始或结尾处可以有两个以上,则也可以使用quantifier {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 :(得分:2)

这是我的两分钱,在一行:

return data.categories.split(',').map(val => val.trim().replace(/^'{2,}|'{2,}$/, "'"));

答案 3 :(得分:1)

字符类在方括号之间查找任何单个字符。具有重复字符的字符类(例如[''])可以不进行重复。

"''modiles2'',''Men''s Apparel'',''Women''s Apparel'',''Jeans'',''Sneakers''"
    .split(',')
    .forEach(s => console.log( s.replace(/^''|''$/g, '\'') ))

答案 4 :(得分:1)

This RegEx可能有助于这样做。为了安全起见,您可能考虑使用 \ x27 代替'

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

enter image description here

此RegEx创建三个组,只是为了简单起见,您可以使用 $ 2 ,这是您的目标输出。