代码之家  ›  专栏  ›  技术社区  ›  Fred J.

使用由变量组成的正则表达式进行测试

  •  -1
  • Fred J.  · 技术社区  · 9 年前

    let var1 = '234A'
    let var2 = '1.4'
    
    // examples of items
    let myArr = ['it has 234AB but with 1.4 factors', 'it is 234 and 1.5'];
    
    // need to return 'it has 234 but with 1.4 factors'
    return myArr.filter(y => new RegExp('/' + var1 + '.*?' + var2.replace('.','\.') + '/', 'i').test(y))
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   trincot    9 年前

    当您使用 RegExp 构造函数不应添加 / ,而不是字符串。

    '.' 具有 '\.' 没有帮助,因为反斜杠由字符串文字解释,并且对RegExp构造函数不可见。你应该把反斜杠加倍。这样,字符串将有一个文字反斜杠,这将对RegExp构造函数可见。

    但还有另一个局限性。正如您现在看到的那样,事件必须按该顺序发生,因此当以相反的顺序发生时,它不会检测到项目。

    为什么不直接使用 includes && ?

    myArr.filter(y => y.includes(var1) && y.includes(var2))