具有特殊字符的动态RegExp

时间:2019-02-14 15:12:39

标签: javascript arrays regex

所以我在使用RegExp时偶然发现了问题。我想比较两个数组

  • 具有候选人技能的人

  • 并且具有工作所需的技能。

很遗憾,我现在必须使用c\\+\\+以确保不会出现无效表达式的错误。

问题:如何动态进行操作,以便准备使用特殊字符的C#或其他语言?

此外,我觉得第一个map(obj => obj.toLowerCase())是多余的,应该由正则表达式单独处理,但也不能这样做。

我最终想要实现的是获得候选人相对于​​工作的百分比技能覆盖率(他/她需要多少技能)。

这是我的代码:

percentage (skills) {
  let matches = skills
    .map(obj => obj.toLowerCase())
    .filter(word => this.flattenedSkills.some(x => {
      if(word === 'css3') word = 'css'
      if(word === 'c++' || x === 'c++') word = 'c\\+\\+'
      // console.log(word,': ', x, ' = ', x.match(new RegExp(word,'gi')))
      return x.match(new RegExp(word,'gi'))
    }))
    .length

  console.log(matches)
  return (matches / this.flattenedSkills.length * 100)
},

0 个答案:

没有答案