我需要在任意位置匹配 不 包含关键字(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]);
}
我们需要一个匹配排除beta2
的所有字符串的正则表达式。 beta2
总是从单词边界开始,但不一定以一个结尾。它可以在字符串中的各个位置。
期望的结果将是:
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
正则表达式适用于第三方分析工具,它使用JavaScript正则表达式来过滤子结果。该工具需要一行正则表达式。没有API,我们无法访问其源代码。
是否有一个JavaScript正则表达式会过滤此分析运行中的第二个测试结果(beta2
)?
答案 0 :(得分:4)
尝试
/^(?!.*beta2).*$/
答案 1 :(得分:0)
这会被视为作弊吗?
return !/beta2/i.test (Str);