正则表达式以匹配其他可选单词

时间:2019-10-30 18:13:49

标签: javascript regex

我有这样的目录字符串:

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/', '')

1 个答案:

答案 0 :(得分:1)

您可以使用non captured group并将其设置为可选

enter image description here

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)

相关问题