代码之家  ›  专栏  ›  技术社区  ›  Brock Adams

我需要匹配在任意位置不包含关键字的字符串

  •  3
  • Brock Adams  · 技术社区  · 15 年前

    我需要匹配字符串 不要 包含关键字( beta2 )在任意位置。

    考虑:

    var aStr    = [
                    '/beta1/foo',
                    'beta1/foo',
                    '/beta1_xyz/foo',
                    'blahBlah/beta1/foo',
                    'beta1',
    
                    '/beta2/foo',
                    'beta2/foo',
                    '/beta2_xyz/foo',
                    'blahBlah/beta2/foo',
                    'beta2',
    
                    '/beat2/foo',
                    'beat2/foo',
                    '/beat2_xyz/foo',
                    'blahBlah/beat2/foo',
                    'beat2'
                ];
    
    function bTestForMatch (Str)
    {
        return /.*\b(?!beta2).*/i.test (Str);
    }
    
    for (var J=0, iLen=aStr.length;  J < iLen;  J++)
    {
        console.log (J, bTestForMatch (aStr[J]), aStr[J]);
    }
    

    我们需要一个与所有排除 β2 . β2 总是从一个词的边界开始,但不一定以一个词结束。它可以在字符串中的各种位置。

    期望的结果是:

     0    true    /beta1/foo
     1    true    beta1/foo
     2    true    /beta1_xyz/foo
     3    true    blahBlah/beta1/foo
     4    true    beta1
     5    false   /beta2/foo
     6    false   beta2/foo
     7    false   /beta2_xyz/foo
     8    false   blahBlah/beta2/foo
     9    false   beta2
    10    true    /beat2/foo
    11    true    beat2/foo
    12    true    /beat2_xyz/foo
    13    true    blahBlah/beat2/foo
    14    true    beat2
    

    regex是第三方分析工具,它使用javascript正则表达式来过滤子结果。该工具接受一行regex。没有API,我们无法访问其源代码。

    是否有一个javascript regex将过滤第二个beta结果?( β2 )从这个分析运行?

    2 回复  |  直到 15 年前
        1
  •  4
  •   kennytm    15 年前

    尝试

    /^(?!.*beta2).*$/
    
        2
  •  0
  •   o-o    15 年前

    这会被视为作弊吗?

    return !/beta2/i.test (Str);