我需要用一个引号替换元素开头和结尾的两个引号。
我的代码是:
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''
我的正则表达式仅用一个引号替换两个引号中的第一个。
我该如何解决这个问题?
答案 0 :(得分:2)
您需要匹配两个引号-使用此正则表达式:
const regex = /^'.*'$/g;
答案 1 :(得分:2)
您的模式使用字符类['']
,该字符类与列出的任何字符都匹配,可以写为[']
只是'
如果开始或结尾处可以有两个以上,则也可以使用quantifier {2,}
来匹配2个或更多的单引号,并替换为单引号。要完全匹配2个单引号,请使用''
。
^'{2,}|'{2,}$
^'{2,}
在字符串的开头匹配两个或更多引号|
或'{2,}$
在字符串的末尾匹配两个或更多单引号使用/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,})$
此RegEx创建三个组,只是为了简单起见,您可以使用 $ 2 ,这是您的目标输出。