js:求一个正则?

const tableList = [
  "account.t_account",
  "account.t_account_ext",
  "account.t_sub_account",
  "account.account.t_sub_account",
   "t_sub_accountok"
]

const databaseList = [
  "account"
]

js:求一个正则,例如上述例子, tableList 处理之后,可以得到

[
  "t_account",
  "t_account_ext",
  "t_sub_account",
  "t_sub_account",
  "t_sub_accountok"
]
阅读 2.2k
3 个回答

感觉不需要借助正则啊,直接用 filter 加上 split 就可以满足需求了呀?

const resultList = tableList
    .filter(value => databaseList.some(key => value.includes(key))) // 过滤匹配项目
    .map(value => value.split('.').pop()) // 收集最后一项属性
// Array(5) [ "t_account", "t_account_ext", "t_sub_account", "t_sub_account", "t_sub_accountok" ]
const tableList = [
  "account.t_account",
  "account.t_account_ext",
  "account.t_sub_account",
  "account.account.t_sub_account",
  "t_sub_accountok"
];

const databaseList = [
  "account"
];

const regex = new RegExp(`^(${databaseList.join('|')})\.`);

const result = tableList.map(table => table.replace(regex, ''));

console.log(result);
tableList.map(string=>{
    const matchResult = string.match(/(.*)(^|\.)(\w+$)/)
    return matchResult[(matchResult?.length ?? 0) - 1] ?? ''
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题