我有这样的目录字符串:
var list = ['/styles/portal/dragonfruit/green.scss',
'/styles/portal/version5/blue.scss',
'/styles/portal/version5/custom/company.scss',
'/styles/portal/version5/custom/industry.scss',
'/styles/portal/version5/custom/corporation.scss',
'/styles/portal/version5/admin/green.scss',
'/styles/portal/version5/admin/blue.scss'];
我想从所有字符串中删除开始样式/ portal / version5 /部分,并有选择地删除自定义(如果存在)。
处理此列表后的输出将显示为:
/green.scss
/blue.scss
/company.scss
/industry.scss
/corporation.scss
/admin/green.scss
/admin/blue.scss
使用string.replace方法时,如何有选择地将custom的单词匹配作为目标?
到目前为止,我有:
var result = item.replace('styles/portal/version5/', '')
答案 0 :(得分:1)
您可以使用non captured group
并将其设置为可选
var list = ['/styles/portal/dragonfruit/green.scss','/styles/portal/version5/blue.scss','/styles/portal/version5/custom/company.scss','/styles/portal/version5/custom/industry.scss','/styles/portal/version5/custom/corporation.scss','/styles/portal/version5/admin/green.scss','/styles/portal/version5/admin/blue.scss'];
let final = list.map(v => v.replace(/^\/?styles\/portal\/version5(?:\/custom)?/, ''))
console.log(final)